用另一个函数求出树的高度,在此使用了两种方法计算树的高度:层序遍历和递归。
/* 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
};