Ctrl K

Ближайший лист от вершины

Средняя
Дан корень root двоичного дерева, все значения в котором различны, и число start — значение одной из вершин. Листом называется вершина без детей. Расстояние между вершинами — число рёбер на пути между ними, причём по рёбрам можно идти как вниз, так и вверх к родителю. Найдите лист, ближайший к вершине со значением start, и верните его значение. Если start сам лист, ответ — start. Тесты подобраны так, что ближайший лист единственный.
Пример 1
root=tree_node([10, 20, 30, None, None, 40, 50, 60]), start=40 → 60

Под вершиной 40 лист 60 на расстоянии 1. Лист 50 — через родителя 30, это 2 ребра, лист 20 — ещё дальше.

Пример 2
root=tree_node([3, 8, None, 6, None, 1]), start=8 → 1

Корень 3 имеет ребёнка, значит он не лист. Единственный лист — 1, до него 2 ребра вниз.

Пример 3
root=tree_node([5]), start=5 → 5

Дерево из одной вершины: она сама и есть лист, расстояние 0.

Ограничения
  • 1 ≤ число вершин ≤ 1000
  • 1 ≤ Node.val ≤ 1000
  • Все значения различны
  • Вершина со значением start есть в дереве
  • Ближайший к ней лист единственный
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиДерево глазами наблюдателя справа СредняяДерево по столбцам СредняяПервый на нижнем этаже СредняяМаксимум на каждом уровне дерева СредняяВставить уровень в дерево Средняя
загружаем Python…
Вход
root=tree_node([10, 20, 30, None, None, 40, 50, 60]), start=40
Ожидается
60

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