P
Python | LeetCode
@easy_python_task9.5K подп.
993просмотров
10.4%от подписчиков
10 марта 2026 г.
statsScore: 1.1K
Задача: 979. Distribute Coins in Binary Tree Сложность: medium Вам дан корень бинарного дерева с n узлами, где каждый узел в дереве содержит node.val монет. Всего по всему дереву распределено n монет. За один ход мы можем выбрать два смежных узла и переместить одну монету из одного узла в другой. Ход может быть как от родителя к ребенку, так и от ребенка к родителю. Верните минимальное количество ходов, необходимых для того, чтобы каждый узел имел ровно одну монету. Пример: Input: root = [3,0,0] Output: 2 Explanation: From the root of the tree, we move one coin to its left child, and one coin to its right child. 👨‍💻 Алгоритм: 1⃣Инициализация и определение рекурсивной функции. Инициализируйте переменную moves = 0. Определите рекурсивную функцию dfs, которая считает количество перемещений монет. Базовый случай: если текущий узел равен null, верните 0. 2⃣Рекурсивный обход дерева. Внутри dfs вызовите dfs для левого и правого поддеревьев, чтобы получить количество монет, которые нужно переместить в каждом поддереве. Вычислите количество перемещений для текущего узла: добавьте абсолютные значения перемещаемых монет в moves. 3⃣Возвращение результата. Верните количество монет, которые текущий узел может передать своему родителю: значение узла плюс количество монет в левом и правом поддеревьях минус 1. Вызовите dfs от корня дерева и верните moves. 😎 Решение: class Solution: def distributeCoins(self, root: Optional[TreeNode]) -> int: self.moves = 0 self.dfs(root) return self.moves def dfs(self, current: Optional[TreeNode]) -> int: if not current: return 0 leftCoins = self.dfs(current.left) rightCoins = self.dfs(current.right) self.moves += abs(leftCoins) + abs(rightCoins) return current.val - 1 + leftCoins + rightCoins Ставь 👍 и забирай 📚 Базу знаний
993
просмотров
1865
символов
Да
эмодзи
Нет
медиа

Другие посты @easy_python_task

Все посты канала →
Задача: 979. Distribute Coins in Binary Tree Сложность: medi — @easy_python_task | PostSniper