zoukankan      html  css  js  c++  java
  • Leetcode563. 二叉树的坡度

    题意

    求每个节点的左子树的节点之和和右子树节点之和的差的绝对值

    思路

    • 其实就是二叉树高度的变种,在二叉树高度的题目里面求的是左右子树的高度,这里求的是子树的节点之和,先看求二叉树高度的代码⬇️
    public int maxDepth(TreeNode root) {
        if(root == null) return 0;
    
        int left = maxDepth(root.left);
        int right = maxDepth(root.right);
        
        return 1 + Math.max(left, right);
    }
    
    • 要修改的地方是 return 的东西,此时不是要求二叉树的高度,而是要求节点之和,而节点之和显然等于左子树的节点之和 + 右子树节点之和 + 当前节点的值
    • 另外因为要计算所有节点的所以要多一句计算语句

    代码(Java)

    class Solution {
        private int sumDegree = 0;
    
        private int calculate(TreeNode root) {
            if(root == null) return 0;
    
            int left = calculate(root.left);
            int right = calculate(root.right);
    
            sumDegree += Math.abs(left - right);
            return left + right + root.val;
        }
    
        public int findTilt(TreeNode root) {
            int allDegree = calculate(root);
            return sumDegree;
        }
    }
    

    代码(Python)

    class Solution:
        sumDegree = 0
        def findTilt(self, root: TreeNode) -> int:
            def calculate(root):
                if not root: return 0
    
                left = calculate(root.left)
                right = calculate(root.right)
    
                self.sumDegree += abs(left - right)
                return left + right + root.val
            calculate(root)
            return self.sumDegree
    
    如有转载,请注明出处QAQ
  • 相关阅读:
    Java作业十(2017-11-8)
    Java作业九(2017-11-6)
    Java作业八(2017-10-30)
    Java作业七(2017-10-30)
    Java作业六(2017-10-30)
    Java作业五(2017-10-15)
    如何获取jqGrid中选择的行的数据
    如何修改WAMP中mysql默认空密码
    为 PhpStorm 配置 Xdebug 来调试代码
    MySQL load_file()/into outfile路径问题总结
  • 原文地址:https://www.cnblogs.com/MartinLwx/p/15099458.html
Copyright © 2011-2022 走看看