Ctrl K

Найти поддерево по ключу

Лёгкая
Дан корень root бинарного дерева поиска: у каждой вершины все значения в левом поддереве меньше её значения, а в правом — больше. Все значения различны. Найдите вершину со значением key и верните её — то есть всё поддерево, которое из неё растёт. Если такой вершины нет, верните None.
Пример 1
root=tree_node([20, 10, 30, 5, 15, 25]), key=10 → [10, 5, 15]

Вершина 10 найдена; возвращаем её вместе с детьми 5 и 15.

Пример 2
root=tree_node([20, 10, 30, 5, 15, 25]), key=17 → None

17 больше 10 и меньше 20, значит, оно было бы правым ребёнком 15, а там пусто. Ответ — None.

Пример 3
root=tree_node([8, None, 12, 9]), key=12 → [12, 9]
Ограничения
  • 1 ≤ число вершин ≤ 5000
  • 1 ≤ значение вершины ≤ 10⁷
  • root — корректное дерево поиска с различными значениями
  • 1 ≤ key ≤ 10⁷
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиСбалансированное дерево из отсортированного списка ЛёгкаяБлижайшее значение в дереве поиска ЛёгкаяСамые частые значения в дереве поиска ЛёгкаяПара в дереве поиска ЛёгкаяСамая близкая пара в дереве поиска Лёгкая
загружаем Python…
Вход
root=tree_node([20, 10, 30, 5, 15, 25]), key=10
Ожидается
[10, 5, 15]

«Запустить» — первые 3 теста у тебя в браузере, «Отправить» — все 38 тестов на сервере, включая скрытые.