Menu
CoddyTech

Binary Tree Right Side View

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

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

Функция

rightSideView(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, 7, 4, -1, 1, -1, 3]
Вывод
[5, 9, 1, 3]
Пояснение
Справа ты видишь 5, 9 и 1 (индекс 6). На четвёртом уровне находится только 3 — индекс 8 под 7 в левом поддереве. Справа ничего не достигает такой глубины, поэтому 3 видно.
challenge icon

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

Как получить вид дерева справа, если у каждого узла может быть любое количество дочерних узлов, хранящихся в списке слева направо?

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

Тест #1

Тест #2

Тест #3

Аргумент

root = [5, 2, 9, 7, 4, -1, 1, -1, 3]

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

[5, 9, 1, 3]