链接:https://leetcode-cn.com/problems/distribute-coins-in-binary-tree/
需要创建一个函数,来计算一个子树中多了或少了几个金币,这样就可以算出一个节点需要分别向它的左右子节点传递(或被传递)多少金币。注意这道题里金币多了或少了,传递或被传递其实没有什么区别。
java代码:
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
class Solution {
int ans = 0;
public int distributeCoins(TreeNode root) {
childToparent(root) ;
return ans;
}
private int childToparent(TreeNode root)
{
if(root==null)
return 0;
int leftvalue = childToparent(root.left);
int rightvalue = childToparent(root.right);
ans += Math.abs(leftvalue)+Math.abs(rightvalue);
return root.val + leftvalue+ rightvalue -1;
}
}