Menu
CoddyTech

Left View of Binary Tree

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

Встаньте слева от дерева. На каждом уровне вы видите один узел — самый левый; остальные узлы уровня скрыты за ним. Верните значения видимых узлов, начиная с верхнего уровня и далее вниз.

Функция

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

Ограничения

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

Примеры

Ввод
root = [3, 8, 5, -1, -1, -1, 6, -1, -1, -1, -1, -1, -1, 1]
Вывод
[3, 8, 6, 1]
Пояснение
8 — лист, поэтому на третьем и четвёртом уровнях находятся только 6 (индекс 6) и 1 (индекс 13), оба под правым потомком 5. Вы всё равно их видите: [3, 8, 6, 1].
challenge icon

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

Уровень d заполняет индексы от 2^d-1 до 2^(d+1)-2. Сможешь построить представление, просматривая эти диапазоны без очереди и рекурсии? Какова стоимость этого для массива с дополнением?

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

Тест #1

Тест #2

Тест #3

Аргумент

root = [3, 8, 5, -1, -1, -1, 6, -1, -1, -1, -1, -1, -1, 1]

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

[3, 8, 6, 1]