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
  • 相关阅读:
    SQL Activity Monitor
    Oracle学习计划
    SQL Server 2008 R2下载地址
    聚集索引与非聚集索引的区别
    Android图片加载后变小
    工作手记之Cransoft(四)
    触发器
    Oracle数据库体系架构概要
    html5
    基础概念
  • 原文地址:https://www.cnblogs.com/MartinLwx/p/15099458.html
Copyright © 2011-2022 走看看