判断是不是平衡二叉树

输入一棵节点数为 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))