题解 | #判断是不是平衡二叉树#

判断是不是平衡二叉树

https://www.nowcoder.com/practice/8b3b95850edb4115918ecebdf1b4d222

Python3递归。所谓自底向上,就是利用非平衡的传染性:有非平衡子树,自己一定非平衡。所以只要子树出现非平衡,就返回-1(非正常深度,正常的深度>=0),子树都平衡,才计算高度差并返回
class Solution:
    # 自底向上,非平衡直接返回-1(-1有传染性,即非平衡往上直接判断非平衡)。平衡再计算深度返回
    def IsBalanced_Solution(self, pRoot):
        def recur(pRoot):
            if pRoot is None: #空树没有深度
                return 0
            left = recur(pRoot.left) #计算左子树深度
            if left == -1: 
                return -1
            right = recur(pRoot.right) #计算右子树深度
            if right == -1:
                return -1
            return max(left, right) + 1 if abs(left - right) <= 1 else -1
        return recur(pRoot) != -1 #-1表示深度差大于等于2


全部评论

相关推荐

机械打工仔:有说的你怀疑一下就行了,直接问也太实诚了
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务