[二叉树] 判断二叉树是否平衡二叉树

思路: 从根节点开始,判断左右子树是否是平衡的,如果都是平衡的,则判断左右子树的高度差是否不大于1

function depth(root)
{
    if( ! root)
    {
        return 0
    }
    return 1 + Math.max(depth(root.left), depth(root.right))
}

/*
 * @param root
 * @param depth 用来返回已经计算过的子树的深度,防止再次计算浪费性能
 */
function isBalance(root, depth)
{
    if( ! root)
    {
        return true
    }
    let depthLeft
    let depthRight
    if( ! isBalance(root.left, depthLeft))
    {
        return false
    }
    if( ! isBalance(root.right, depthRight))
    {
        return false
    }

    if(Math.abs(depthLeft - depthRight) > 1)
    {
        return false
    }

    depth = Math.max(depthLeft, depthRight)
    return true
}

复杂度: O(n)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容