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;
};