Ctrl K

Поддерево над нижним рядом

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

Нижний ряд (глубина 3) — вершины 3 и 8, обе дети вершины 6. Самое маленькое поддерево, где есть они обе, — с корнем 6.

Пример 2
root=tree_node([5, 0, 11, 12, None, None, 13]) → [5, 0, 11, 12, None, None, 13]

Нижний ряд — 12 (под 0) и 13 (под 11). Вместе они встречаются только в корне 5, поэтому ответ — всё дерево.

Пример 3
root=tree_node([40, None, 30, 20]) → [20]

Внизу одна вершина — 20; поддерево из неё одной и есть ответ.

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

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