平衡二叉树
题目描述:
输入一棵二叉树,判断该二叉树是否是平衡二叉树。
在这里,我们只需要考虑其平衡性,不需要考虑其是不是排序二叉树
问题分析:
遍历左右子树,当左子树-右子树的深度大于1时,返回-1,否则返回二叉树的深度
代码展示:
/* function TreeNode(x) {
this.val = x;
this.left = null;
this.right = null;
}
*/
// 平衡二叉树:任意一子节点的左右子树高度差不大于1 (包含空树)
// 思路:遍历左右子树,当左子树-右子树的深度大于1时,返回-1,否则返回二叉树的深度
function IsBalanced_Solution(pRoot)
{
// write code here
return getDepth(pRoot) !== -1;
}
function getDepth(root){
if(root === null)
return 0;
let left = getDepth(root.left);
if(left === -1)
return -1;
let right = getDepth(root.right);
if(right === -1)
return -1;
return Math.abs(left -right)>1?-1:1+Math.max(left,right);
}