55-平衡二叉树

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

posted @ 2019-09-17 15:57  尘世中一个迷途小书童  阅读(156)  评论(0编辑  收藏  举报