162
Глава 13. Бинарное дерево поиска
После всего этого фактический поиск относительно прост.
Мы инициализируем переменную цикла node так, чтобы она
ссылалась на корень root. При каждой итерации цикла сравни-
ваем target с node.key. При переменной target, которая меньше
текущего ключа, перемещаемся к левому дочернему узлу. Если
она больше, то переходим к правому дочернему узлу. И если она
равна, то возвращаем текущую вершину.
Если мы дошли до нижнего уровня дерева и не нашли target, то
делаем вывод о том, что в дереве нет соответствующего ключа,
и возвращаем значение null.
Поиск по значению
Как я объяснил в предыдущем упражнении, время выполне-
ния findNode пропорционально высоте дерева, а не количеству
вершин, поскольку не нужно просматривать все ...