题目:输入一棵二叉树的根节点,判断该树是不是平衡二叉树。如果某二叉树中任意节点的左、右子树的深度相差不超过1,那么它就是一棵平衡二叉树。
def tree_depth(root):
if not root:
return 0
left = tree_depth(root.left)
right = tree_depth(root.right)
if left>right:
return left+1
else:
return right+1
def is_balanced(root):
if not root:
return True
left = tree_depth(root.left)
right = tree_depth(root.right)
diff = left-right
if diff>1 or diff<-1:
return False
return is_balanced(root.left) and is_balanced(root.right)
注:求出左右子树的深度,然后求差,判断差是否否和平衡条件。一直遍历到叶子结点,如果其中任何一个节点不平衡即返回False。