美文网首页
[二叉树] 判断二叉树是否平衡二叉树

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

作者: 爱上落入尘世间的你 | 来源:发表于2017-11-13 16:21 被阅读0次

    思路: 从根节点开始,判断左右子树是否是平衡的,如果都是平衡的,则判断左右子树的高度差是否不大于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)

    相关文章

      网友评论

          本文标题:[二叉树] 判断二叉树是否平衡二叉树

          本文链接:https://www.haomeiwen.com/subject/fwmzmxtx.html