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
  • 相关阅读:
    知识点
    Python基础 (下)
    Python基础 (上)
    RESTful和SOAP的区别
    Maven
    centos7下配置的php命令
    centos7下的nginx命令配置
    CentOS 7.4下使用yum安装MySQL5.7.20 最简单的
    word下载
    phpExcel导出表格
  • 原文地址:https://www.cnblogs.com/MartinLwx/p/15099458.html
Copyright © 2011-2022 走看看