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

判断是不是平衡二叉树

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

判断是不是平衡二叉树

输入一棵节点数为 n 二叉树,判断该二叉树是否是平衡二叉树。

平衡二叉树(Balanced Binary Tree),具有以下性质:它是一棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树。

思路:用递归,如果当前节点的左右层数超过1,则不是平衡二叉树,如果没有超过1,则判断左右子树是否为平衡二叉树,如果左右子树都为平衡二叉树则改数为平衡二叉树

# class TreeNode:
#     def __init__(self, x):
#         self.val = x
#         self.left = None
#         self.right = None
#
# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
#
# 
# @param pRoot TreeNode类 
# @return bool布尔型
#
class Solution:
    def countLevel(self,tree,n):
        if tree == None:
            return n
        else :
            return max(self.countLevel(tree.left, n+1), self.countLevel(tree.right, n+1))
    def IsBalanced_Solution(self , pRoot: TreeNode) -> bool:
        # write code here
        if pRoot == None:
            return True
        if abs(self.countLevel(pRoot.left,0) - self.countLevel(pRoot.right,0)) > 1:
            return False
        else:
            return (self.IsBalanced_Solution(pRoot.left) & self.IsBalanced_Solution(pRoot.right))
全部评论

相关推荐

搞机墨镜猫:科研和竞赛全写成项目经历,另外你项目涉及到的技术栈太杂了,应该对不同岗位强调写不同的技术栈,寒假应该不太好找短期,长期明年3,4月好找很多
点赞 评论 收藏
分享
累死的一条狗:***一人顶10人那你给我发10个人的工资总和吗
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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