Menu
CoddyTech

Maximum Depth of Binary Tree

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

Функция

maxDepth(tree: integer-array) → integer
treeinteger-array
двоичное дерево в порядке уровней, где -1 обозначает пустое место
Возвращаетinteger
количество узлов на самом длинном пути от корня до листа

Ограничения

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

Примеры

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

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

challenge icon

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

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

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

Случай 1

Случай 2

Случай 3

Ввод

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

Ожидается

4