Menu
CoddyTech

Binary Tree Level Order Traversal

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

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

Функция

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

Ограничения

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

Примеры

Ввод
tree = [4, 9, 2, -1, 6, 8, 5, -1, -1, 3]
Вывод
[[4], [9, 2], [6, 8, 5], [3]]
Пояснение
У корня 4 есть потомки 9 и 2 с индексами 1 и 2. Индекс 3 пуст, поэтому на третьем уровне находится 6 (индекс 4, под 9), затем 8 и 5 (индексы 5 и 6, под 2). 3 с индексом 9 — левый потомок 6, он один на четвертом уровне.

lock icon+15 скрытых тестов при отправке

challenge icon

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

Можешь вернуть уровни в зигзагообразном порядке: первый — слева направо, второй — справа налево и так далее, не сортируя ни один уровень?

Сбросить код
def levelOrder(tree):
    # Напишите код здесь
Тестовые случаи

Случай 1

Случай 2

Случай 3

Ввод

tree = [4, 9, 2, -1, 6, 8, 5, -1, -1, 3]

Ожидается

[[4], [9, 2], [6, 8, 5], [3]]