https://leetcode-cn.com/problems/binary-tree-tilt/
class Info{
public:
int tilt=0;//以当前节点为根的树的坡度
int sum=0;//以当前节点为根的树的和
Info(int t,int s):tilt(t),sum(s){};
};
class Solution {
public:
Info process(const TreeNode* node){
if(!node) return Info(0,0);
Info l=process(node->left);
Info r=process(node->right);
int cur_sum=l.sum+r.sum+node->val;
int cur_tilt=l.tilt+r.tilt+abs(l.sum-r.sum);
return Info(cur_tilt,cur_sum);
}
int findTilt(TreeNode* root) {
return process(root).tilt;
}
};