Ctrl K

Спуск зигзагом

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

Из корня 4 идём влево в 2, вправо в 7, влево в 5, вправо в 1: четыре шага, направление каждый раз меняется.

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

Дерево — цепочка только вправо, поэтому повернуть некуда и спуск длится один шаг.

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

Одна вершина — спуск из нуля шагов.

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

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