Menu
CoddyTech

Binary Tree Zigzag Level Order Traversal

Тебе дано бинарное дерево, хранящееся в массиве root. Корень находится по индексу 0, дети узла с индексом i — по индексам 2*i+1 (левый) и 2*i+2 (правый), -1 обозначает пустое место, а в конце массива могут быть дополнительные элементы -1.

Верни значения узлов по уровням в зигзагообразном порядке: уровень корня — слева направо, следующий — справа налево и так далее, чередуя направление до самого глубокого уровня. Это также называется спиральным обходом уровней.

Функция

zigzagLevelOrder(root: integer-array) → integer-2d-array
rootinteger-array
дерево в порядке кучи, с -1 для пустого места
Возвращаетinteger-2d-array
по одному списку значений для каждого уровня, начиная с верхнего и чередуя направление: слева направо и справа налево

Ограничения

  • 1 ≤ root.length ≤ 32767
  • Каждый root[i] равен -1 или значению, для которого 0 ≤ root[i] ≤ 104.
  • Значения узлов различны.
  • root[0] никогда не равно -1, поэтому дерево содержит как минимум один узел.
  • После последнего узла в массиве могут быть дополнительные элементы -1.
  • Оба потомка пустого места тоже пусты, а дерево имеет не более 14 уровней.

Примеры

Ввод
root = [8, 12, 5, 1, 9, -1, 14, -1, -1, 4, 2, -1, -1, 11]
Вывод
[[8], [5, 12], [1, 9, 14], [11, 2, 4]]
Пояснение
Если читать слева направо, уровни такие: 8; 12, 5; 1, 9, 14; 4, 2, 11. Уровни 1 и 3 идут в обратном порядке: [5, 12] и [11, 2, 4].
challenge icon

Дополнительный вопрос

Можешь сразу поместить каждое значение на своё место в строке, не переворачивая и не используя второй стек?

Сбросить код
def zigzagLevelOrder(root):
    # Напишите код здесь

Тест #1

Тест #2

Тест #3

Аргумент

root = [8, 12, 5, 1, 9, -1, 14, -1, -1, 4, 2, -1, -1, 11]

Ожидаемый вывод

[[8], [5, 12], [1, 9, 14], [11, 2, 4]]