Ctrl K

Отрезать ветки без единиц

Средняя
Дан корень root двоичного дерева, в каждой вершине которого записан 0 или 1. Удалите из дерева все поддеревья, в которых нет ни одной единицы (поддерево вершины — сама вершина вместе со всеми её потомками). Верните корень того, что останется; если не останется ничего, верните None.
Пример 1
root=tree_node([0, 1, 0, None, None, 0, 0]) → [0, 1]

Правая ветка корня целиком из нулей и отрезается. Корень сам равен 0, но под ним есть единица, поэтому он остаётся.

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

Левый ребёнок остаётся ради своей правой единицы, его левый ребёнок-ноль уходит; правый ребёнок корня — одинокий ноль, он тоже уходит.

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

Единиц нет совсем, от дерева ничего не остаётся — ответ пустое дерево.

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

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