Menu
CoddyTech

Path Sum

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

Функция

hasPathSum(tree: integer-array, targetSum: integer) → boolean
treeinteger-array
бинарное дерево в порядке обхода по уровням, где -1 обозначает пустое место
targetSuminteger
сумма, которой должен достигать путь от корня до листа
Возвращаетboolean
true, если сумма значений на каком-либо пути от корня до листа равна targetSum, иначе false

Ограничения

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

Примеры

Ввод
tree = [3, 9, 6, -1, 2, 1, 7]targetSum = 14
Вывод
true
Пояснение
Сумма по пути 3, 9, 2 (индексы 0, 1, 4) равна 14, а 2 с индексом 4 — это лист.

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

challenge icon

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

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

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

Случай 1

Случай 2

Случай 3

Ввод

tree = [3, 9, 6, -1, 2, 1, 7]
targetSum = 14

Ожидается

true