题目:输入一棵二叉树的根节点,判断该树是不是平衡二叉树。如果某二叉树中任意节点的左、右子树的深度相差不超过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。