zoukankan      html  css  js  c++  java
  • 每日一题力扣110 平衡二叉树

    给定一个二叉树,判断它是否是高度平衡的二叉树。

    本题中,一棵高度平衡二叉树定义为:

    一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1 。

    把递归就当作三个节点,左 根 右。这层递归里要做的事情就是找到最大高度,找最大高度就是左子树算完最大高度,右子树也算完最大高度,然后+1即可。所以就是右max(height(左),height(右))+1的存在。

    得到了该根节点的最大高度之后,还要左右子树的最大高度相减必须小于等于1才是平衡二叉树;不仅当前根节点要满足这个条件,这棵树中的所有根节点都必须满足平衡二叉树,所以就有最后一行两个and的存在

    class Solution:
        def isBalanced(self, root: TreeNode) -> bool:
            #递归要关心的事:
            #1.终止条件:肯定是节点为空
            #2.返回值是什么,是节点的最大高度
            #3.本级递归要做什么:要找到子树的最大高度
            def height(root: TreeNode) -> int:
                if not root:
                    return 0
                return max(height(root.left), height(root.right)) + 1#返回的是最大的高度
    
            if not root:#如果没有节点,肯定就是平衡二叉树
                return True
            return abs(height(root.left) - height(root.right)) <= 1 and self.isBalanced(root.left) and self.isBalanced(root.right)#左右子树都需要是平衡二叉树,并且root要左右子树相减小于等于1
  • 相关阅读:
    购物网站被p.egou.com强制恶意劫持
    css下拉菜单
    StringToInt
    JframeMaxSize
    frameMaxSize
    inputChar
    英语要求
    sciAndSubject
    fileRename
    tensorflowOnWindows
  • 原文地址:https://www.cnblogs.com/liuxiangyan/p/14693047.html
Copyright © 2011-2022 走看看