Ctrl K

Ровно растущее дерево

Лёгкая
Дан корень root двоичного дерева. Высота поддерева — число вершин на самом длинном пути от его вершины вниз до листа; у пустого поддерева высота 0. Назовём дерево ровно растущим, если у **каждой** его вершины высоты левого и правого поддеревьев отличаются не больше чем на 1. Верните True, если дерево ровно растущее, и False иначе.
Пример 1
root=tree_node([4, 2, 9, 1, None, 7, 11]) → True

У вершины 2 слева поддерево высоты 1, справа пусто — разница 1, это допустимо. У корня обе ветви высоты 2.

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

Корень 6: слева цепочка 3 → 2 → 1 высоты 3, справа пусто. Разница 3 — дерево перекошено.

Пример 3
root=tree_node([]) → True

В пустом дереве нет ни одной вершины, которая нарушала бы правило.

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

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