牛客网-剑指offer[编程题]平衡二叉树 js详解

牛客网-剑指offer[编程题]平衡二叉树 js详解_第1张图片
平衡二叉树(Balanced Binary Tree) 具有以下性质:它是一棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树。平衡二叉树的常用实现方法有红黑树、AVL、替罪羊树、Treap、伸展树等。 最小二叉平衡树的节点的公式如下 F(n)=F(n-1)+F(n-2)+1 这个类似于一个递归的数列,可以参考Fibonacci数列,1是根节点,F(n-1)是左子树的节点数量,F(n-2)是右子树的节点数量。

function IsBalanced_Solution(pRoot)
{
    if(!pRoot) return true;
    return Math.abs(height(pRoot.left)-height(pRoot.right))<=1;
 
    function height(node){
        if(!node) return 0;
        if(!(node.left) && !(node.right)) return 1;
 
        return Math.max(height(node.left),height(node.right))+1;
    }
}

JavaScript abs() 方法

Math.abs() 方法可返回数的绝对值。

你可能感兴趣的:(牛客-剑指offer)