Menu
CoddyTech

Bottom View of Binary Tree

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

Корень находится в столбце 0; шаг влево перемещает на один столбец влево, шаг вправо — на один столбец вправо. Если смотреть снизу, в каждом столбце виден самый глубокий узел, а при равной глубине — последний на этом уровне при чтении слева направо (с наибольшим индексом). Верните видимые значения, начиная с самого левого столбца.

Функция

bottomView(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 = [5, 2, 9, 4, 7, 1, 6]
Вывод
[4, 2, 1, 9, 6]
Пояснение
В столбце 0 находятся 5 и, двумя уровнями ниже, 7 (индекс 4) и 1 (индекс 5). 1 расположен дальше на том же уровне, поэтому он отображается. В столбцах -2, -1, 1 и 2 находятся 4, 2, 9 и 6.
challenge icon

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

Если при равенстве на самом глубоком уровне столбца нужно возвращать все узлы с одинаковым значением, слева направо, как изменится версия с обходом в ширину? Что вернёт столбец 0 в примере 1?

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

Тест #1

Тест #2

Тест #3

Аргумент

root = [5, 2, 9, 4, 7, 1, 6]

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

[4, 2, 1, 9, 6]