题目描述:
给定一个二叉树,判断它是否是高度平衡的二叉树。
本题中,一棵高度平衡二叉树定义为:
一个二叉树每个节点的左右两个子树的高度差的绝对值不超过1
知识点:
思路和代码:
def tree_depth(root):
if not root:
return 0
else:
return max(tree_depth(root.left),tree_depth(root.right)) +1
def avl_depth(root):
if not root:
return 0
left_depth = avl_depth(root.left)
right_depth = avl_depth(root.right)
if left_depth<0:
return left_depth
if right_depth < 0:
return right_depth
if abs(left_depth - right_depth) < 2:
return max(right_depth,left_depth)+1
else:
return -1
def is_balanced(root):
return avl_depth(root)>=0