Ctrl K

Где сходятся самые глубокие листья

Средняя
Дан корень root двоичного дерева. Глубина корня равна 0, глубина ребёнка на единицу больше глубины родителя. Лист — вершина без детей. Найдите самые глубокие листья дерева и вершину, в которой сходятся пути от них к корню и которая при этом расположена как можно ниже. Иначе говоря, это самая глубокая вершина, в поддереве которой лежат все самые глубокие листья (вершина считается лежащей в собственном поддереве). Верните эту вершину — проверяется всё поддерево, которое она задаёт.
Пример 1
root=tree_node([10, 4, 7, 1, None, 3, 8, 6, None, None, None, 2]) → [10, 4, 7, 1, None, 3, 8, 6, None, None, None, 2]

Самые глубокие листья — 6 (под 1) и 2 (под 8), оба на глубине 3. Ниже всего они сходятся в корне 10, поэтому ответ — всё дерево.

Пример 2
root=tree_node([5, 9, 2, None, None, 11, 14]) → [2, 11, 14]

Самые глубокие листья — 11 и 14, их общий предок — вершина 2. Возвращаем поддерево с корнем 2.

Пример 3
root=tree_node([3, 0, None, None, 12]) → [12]

Самый глубокий лист один — 12. Для одной вершины ответ — она сама.

Ограничения
  • 1 ≤ число вершин ≤ 1000
  • 0 ≤ Node.val ≤ 1000
  • Все значения в дереве различны
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиДерево по столбцам СредняяПоддерево над нижним рядом СредняяСколько шагов между ключами СредняяСлух по дереву СредняяСумма двоюродных в дереве Средняя
загружаем Python…
Вход
root=tree_node([10, 4, 7, 1, None, 3, 8, 6, None, None, None, 2])
Ожидается
[10, 4, 7, 1, None, 3, 8, 6, None, None, None, 2]

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