55-平衡二叉树

蹲街弑〆低调 提交于 2019-11-29 21:38:39

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

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!