其他分享
首页 > 其他分享> > 563. 二叉树的坡度

563. 二叉树的坡度

作者:互联网

 作者:LeetCode-Solution
链接:https://leetcode-cn.com/problems/binary-tree-tilt/solution/er-cha-shu-de-po-du-by-leetcode-solution-7rha/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

 

深度优先算法,定义一个记录两个节点差值的和的变量ans,通过递归遍历树,直到找到最底层的点,再返回两个点的和(因为对于下层节点多余2的树来说,需要统计其左右子树的和的差值),直到最上层,通过左右子树各自的和,做减法,去绝对值。

求两数的绝对值方法:Math.abs(sumLeft - sumRight)

class Solution {


        int ans = 0;

        public  int findTilt(TreeNode root) {
            dfs(root);
            return ans;
        }

        public  int dfs(TreeNode node) {
            if (node == null) {
                return 0;
            }
            int sumLeft = dfs(node.left);
            int sumRight = dfs(node.right);
            ans += Math.abs(sumLeft - sumRight);
            return sumLeft + sumRight + node.val;
        }



}




public class TreeNode {
    int val;
    TreeNode left;
    TreeNode right;
    TreeNode() {}
    TreeNode(int val) {
        this.val = val;
    }

    TreeNode(int val, TreeNode left, TreeNode right) {
        this.val = val;
        this.left = left;
        this.right = right;
    }

}

 

标签:node,right,TreeNode,val,坡度,int,563,二叉树,left
来源: https://blog.csdn.net/weixin_45799228/article/details/121429543