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

判断是不是平衡二叉树

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 
        

全部评论

相关推荐

牛客263158796号:我领羊一面后十天不挂也不推进 今天问hr说等前序的第一批意向发完看情况再看是否推进
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务