Ctrl K

Все пути до листьев с заданной суммой

Средняя
Дан корень двоичного дерева root и целое число total. Найдите все пути от корня до листа, на которых сумма значений вершин равна total. Каждый путь верните списком значений его вершин в порядке от корня к листу. Лист — вершина без детей. Сами пути можно перечислить в любом порядке; если подходящих путей нет, верните пустой список.
Пример 1
root=tree_node([4, 2, 7, 1, 5, None, -2]), total=9 → [[4, 7, -2]]

Путей до листа три: 4 → 2 → 1 (сумма 7), 4 → 2 → 5 (11) и 4 → 7 → -2 (9). Подходит только последний.

Пример 2
root=tree_node([1, 2, 2, 3, None, None, 3]), total=6 → [[1, 2, 3], [1, 2, 3]]

Обе ветви 1 → 2 → 3 дают 6. Значения совпадают, но это разные пути, и вернуть нужно оба.

Пример 3
root=tree_node([3, 1]), total=3 → []

Корень 3 — не лист, у него есть ребёнок. Единственный путь 3 → 1 даёт 4, так что ответ пуст.

Ограничения
  • Число вершин от 0 до 5000
  • -1000 ≤ значение вершины ≤ 1000
  • -1000 ≤ total ≤ 1000
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиНаименьшее слово от листа к корню СредняяВсе пути от корня до листьев ЛёгкаяЭто дерево поиска? СредняяДве перепутанные вершины СредняяДерево в правую цепочку Средняя
загружаем Python…
Вход
root=tree_node([4, 2, 7, 1, 5, None, -2]), total=9
Ожидается
[[4, 7, -2]]

«Запустить» — первые 3 теста у тебя в браузере, «Отправить» — все 42 теста на сервере, включая скрытые.