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

判断是不是平衡二叉树

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

先审好题,要求满足两个条件:

  1. 左右两个子树的深度差不超过1
  2. 左右两个子树本身也是平衡二叉树

功能分解:

  1. 求一个二叉树的深度
  2. 判断是否为平衡二叉树,包括其左右子树是否也是平衡二叉树

可通过两个递归函数实现


class Solution:
    def IsBalanced_Solution(self , pRoot: TreeNode) -> bool:
        # write code here
        if not pRoot:
            return True
        left = self.deep(pRoot.left)
        right = self.deep(pRoot.right)
        # 满足左右子树的深度差值不超过1
        if abs(left - right) > 1:
            return False
        # 左右子树本身也是平衡的
        return self.IsBalanced_Solution(pRoot.left) and self.IsBalanced_Solution(pRoot.right)
    
    # 求树的高度
    def deep(self, root: TreeNode) -> bool:
        if not root:
            return 0
        left = self.deep(root.left)
        right = self.deep(root.right)
        return left + 1  if left > right else right + 1 
        

全部评论

相关推荐

这算盘打的
程序员小白条:都这样的,都是潜规则,你自己说可以实习一年就行了,实习可以随便跑路的
点赞 评论 收藏
分享
07-02 22:46
门头沟学院 Java
码农索隆:hr:“管你投没投,先挂了再说”
点赞 评论 收藏
分享
牛客38347925...:9,2学生暑期实习失利开始投小厂,给这群人整自信了
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
07-08 12:10
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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