Ctrl K

По монете на вершину

Средняя
Дано двоичное дерево из n вершин; в вершине лежит node.val монет, а всего монет в дереве ровно n. За один ход можно переложить одну монету между двумя соседними вершинами — от родителя к ребёнку или от ребёнка к родителю. Верните наименьшее число ходов, после которых в каждой вершине окажется ровно одна монета.
Пример 1
root=tree_node([0, 0, 3]) → 3

Две монеты уходят из правого ребёнка в корень (2 хода), затем одна из них идёт из корня в левого ребёнка (1 ход). Всего 3.

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

У вершины 2 лишняя монета, и она спускается к её ребёнку за один ход.

Пример 3
root=tree_node([1]) → 0
Ограничения
  • 1 ≤ n ≤ 10⁵
  • 0 ≤ node.val
  • Сумма node.val по всем вершинам равна n
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиЭто дерево поиска? СредняяДве перепутанные вершины СредняяВсе пути до листьев с заданной суммой СредняяДерево в правую цепочку СредняяСумма чисел на ветвях Средняя
загружаем Python…
Вход
root=tree_node([0, 0, 3])
Ожидается
3

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