Обход бинарного дерева зигзагом

MediumAlgo
10:00
Лучше работает на десктопе
TreesBFSDequereal-interview
Реальный собес00:17:00-00:26:452026-04-10 13-02-04.movСтраница собеса
Кадр с условием задачи 1
Кроп кадра с собеседования

Дано бинарное дерево в формате массива level-order, где None означает отсутствие узла.

Верните значения узлов по уровням, но направление обхода должно чередоваться:

- первый уровень слева направо;
- второй уровень справа налево;
- третий снова слева направо;
- и так далее.

В исходном собеседовании задача была сформулирована через класс Node. В тренажере дерево передается массивом, чтобы задачу можно было проверять автотестами в браузере.

Сигнатура

def zigzag_level_order(tokens: list) -> list[list[int]]:

Пример

zigzag_level_order([3, 9, 20, None, None, 15, 7])
# -> [[3], [20, 9], [15, 7]]

Примеры

Пример 1

Вход:
tokens = [3,9,20,null,null,15,7]
Выход:[[3],[20,9],[15,7]]

Пример 2

Вход:
tokens = [1]
Выход:[[1]]

Пример 3

Вход:
tokens = [null]
Выход:[]
Консоль
Нажмите Run или Ctrl+Enter для запуска