Ctrl K

Обрезка слабых ветвей

Средняя
Дан корень root двоичного дерева и целое число threshold. Сумма пути — это сумма значений всех вершин на пути от корня до листа (лист — вершина без детей). Вершина считается слабой, если **каждый** путь от корня до листа, проходящий через неё, имеет сумму строго меньше threshold. Удалите все слабые вершины одновременно (вместе с их поддеревьями) и верните корень получившегося дерева. Если удалённым оказался корень, верните пустое дерево.
Пример 1
root=tree_node([4, 9, -2, None, None, 1, -6]), threshold=5 → [4, 9]

Пути от корня до листьев: 4+9 = 13, 4-2+1 = 3, 4-2-6 = -4. Листья 1 и -6 лежат только на слабых путях и удаляются; вершина -2 теряет обоих детей, все её пути слабые — она тоже уходит.

Пример 2
root=tree_node([3, -1, 5, 8, -7]), threshold=10 → [3, -1, None, 8]

Пути: 3-1+8 = 10, 3-1-7 = -5, 3+5 = 8. Остаётся только путь 3 → -1 → 8.

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

Единственный путь даёт 3 < 4, удаляется всё дерево.

Ограничения
  • 1 ≤ число вершин ≤ 5000
  • -10⁵ ≤ Node.val ≤ 10⁵
  • -10⁹ ≤ threshold ≤ 10⁹
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиЭто дерево поиска? СредняяДве перепутанные вершины СредняяВсе пути до листьев с заданной суммой СредняяДерево в правую цепочку СредняяСумма чисел на ветвях Средняя
загружаем Python…
Вход
root=tree_node([4, 9, -2, None, None, 1, -6]), threshold=5
Ожидается
[4, 9]

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