码迷,mamicode.com
首页 > 其他好文 > 详细

每日一题力扣110 平衡二叉树

时间:2021-04-24 11:48:57      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:判断   定义   pre   def   绝对值   高度   color   关心   class   

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

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

一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 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

 

每日一题力扣110 平衡二叉树

标签:判断   定义   pre   def   绝对值   高度   color   关心   class   

原文地址:https://www.cnblogs.com/liuxiangyan/p/14693047.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!