用另一个函数求出树的高度,在此使用了两种方法计算树的高度:层序遍历和递归。

/* function TreeNode(x) {
    this.val = x;
    this.left = null;
    this.right = null;
} */
function IsBalanced_Solution(pRoot)
{
    // write code here
    if (!pRoot) {
        return true;
    }
    if (Math.abs(treeDepth(pRoot.left) - treeDepth(pRoot.right)) <= 1) {
        if (IsBalanced_Solution(pRoot.left) && IsBalanced_Solution(pRoot.right)) {
            return true;
        } else {
            return false;
        }
    } else {
        return false;
    }
}
function treeLayerNum (pRoot) {
    let layer = 0;
    if (pRoot) {
        layer += 1;
    }
    let queue = [];
    queue.push(pRoot);
    while (queue[0]) {
        let queueLen = queue.length;
        for (let i = 0; i < queueLen; i++) {
            let node = queue.shift();
            if (node.left) {
                queue.push(node.left);
            }
            if (node.right) {
                queue.push(node.right);
            }
        }
        if (queue[0]) {
            layer++;
        }
    }
    return layer
}

function treeDepth (pRoot) {
    if (!pRoot) {
        return 0;
    }
    let left = treeDepth(pRoot.left);
    let right = treeDepth(pRoot.right);
    return Math.max(left, right) + 1;
}
module.exports = {
    IsBalanced_Solution : IsBalanced_Solution
};