LeetCode每日一题:563. 二叉树的坡度【2021/11/18】

238 阅读1分钟

题目链接: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);
    }
};