版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Sea_muxixi/article/details/86563332
leetcode 979. Distribute Coins in Binary Tree
题意:给你一个二叉树,对于每个节点的val,每次只能往父亲或者儿子移动1,最后使得所有节点值都为1,求最小的移动次数。
思路:从叶子到跟寻找,对于每个节点,只能剩下一个。多了的值肯定要全给父亲,少的值全问父亲要,统计一下就好了。
class Solution {
public:
int distributeCoins(TreeNode* root) {
ans = 0;
dfs(root);
return ans;
}
int dfs(TreeNode* root)
{
if (root == nullptr) return 0;
int left = dfs(root->left);
int right = dfs(root->right);
ans += abs(left) + abs(right);
return root->val + left + right - 1;
}
private:
int ans;
};