题目描述
输入一棵二叉树,判断该二叉树是否是平衡二叉树。
这里首先得知道平衡二叉树的性质
平衡二叉搜索树(Balanced Binary Tree)具有以下性质:它是一棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树。
思路:递归调用判断是否为平衡二叉树的函数,判断条件,任意违背以下条件之一则不为平衡二叉树:
1、左子树与右子树自身不小于0(这个怎么理解呢)
2、左子树与右子树高度只差不超过1(注意:是任一左子树与右子树!!)
class TreeNode():
def __init__(self, x):
self.val = x
self.left = None
self.right = None
def function(root):
return judge(root) >= 0
def judge(root):
if not root:
return 0
left = judge(root.left)
right = judge(root.right)
if (left < 0 or right < 0 or abs(left - right) > 1 ):
return -1
return max(left , right)+1