题目描述
输入一棵二叉树,判断该二叉树是否是平衡二叉树。
该题目的思路也是一个遍历,二叉树深度从最底部开始计算,从叶子节点向上查询是否每个节点都满足平衡二叉树的要求,满足的话返回当前子树的高度,不满足的话直接返回-1.
/* function TreeNode(x) {
this.val = x;
this.left = null;
this.right = null;
} */
function IsBalanced_Solution(pRoot)
{
if(!pRoot){return true;}
function depth(root){
if(!root){return 0;}
let left = depth(root.left);
if(left==-1){return -1;}
let right = depth(root.right);
if(right==-1){return -1;}
if(left-right>1 || left-right<-1){
return -1;
}else{
return 1+(right>left?right:left);
}
}
return depth(pRoot)!=-1;
}