题目链接:563. 二叉树的坡度 - 力扣(LeetCode) (leetcode-cn.com)
难度:Easy
考察递归,递归计算每个节点的子树和,之后遍历每个节点,统计坡度即可。
#define abs(x) (((x)<0)?(-(x)):(x))
class Solution {
int sum(TreeNode* tr){
if(tr == nullptr){
return 0;
}
return tr->val = tr->val + sum(tr->left) + sum(tr->right);
}
int work(TreeNode* tr){
if(tr == nullptr){
return 0;
}
return work(tr->left) + work(tr->right) + abs((tr->left==nullptr?0:tr->left->val) - (tr->right==nullptr?0:tr->right->val));
}
public:
int findTilt(TreeNode* root) {
if(root==nullptr){
return 0;
}
sum(root);
return work(root);
}
};