感觉题目对思维的能力要求还是挺高的,不能直接暴力搜索求解,需要将问题进行很大的转化,思维题
/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* TreeNode *left;
* TreeNode *right;
* TreeNode(int x) : val(x), left(NULL), right(NULL) {}
* };
*/
class Solution {
public:
int res = 0;
int distributeCoins(TreeNode* root) {
res = 0;
dfs(root);
return res;
}
int dfs(TreeNode *root){
if(root==NULL) return 0;
int left = dfs(root->left);
int right = dfs(root->right);
res += abs(left)+abs(right);
return root->val+left+right-1;
}
};