Да блин сегодня проходил собеседование и все вопросы были из разряда деревьев и алгоритмов
Так и знал, что вопрос связан с собеседованием)
Это какая-то традиция - спрашивать подобные низкоуровневые вещи на собеседованиях (и потом ни разу их не применять за все годы работы).
Я, например, сейчас не помню, как работает поиск по бинарному дереву. Каждый раз, когда мне надо вспомнить (и обычно это как раз ради собеседования, а не ради решения реальной задачи), я разбираюсь, понимаю, а на следующий день успешно забываю. Точно так же происходит и со всеми остальными теоретическими знаниями, редко применяемыми за недавний промежуток времени. Знания имеют тенденцию вытесняться новыми знаниями, когда они не востребованы.
Если бы моя работа действительно была связана с постоянным поиском по бинарным деревьям вручную, а не с помощью готовых давно отлаженных алгоритмов, то уж наверное я бы как-нибудь запомнил. Но таких работ - единицы. Прикладной код обычно не требует вручную это делать, т.к. можно использовать стандартные компоненты.