输入一棵二叉树,判断该二叉树是否是平衡二叉树。
在这里,我们只需要考虑其平衡性,不需要考虑其是不是排序二叉树
平衡二叉树(Balanced Binary Tree),具有以下性质:它是一棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树。
/* function TreeNode(x) {
this.val = x;
this.left = null;
this.right = null;
} */
function IsBalanced_Solution(pRoot)
{
// write code here
//它是一棵空树
if(!pRoot) return true;
// 左右子树的高度的函数
const dfs = root => {
if(!root) return 0;
return Math.max(dfs(root.left),dfs(root.right)) + 1
}
//左右子树的高度
let left = dfs(pRoot.left)
let right = dfs(pRoot.right)
if(Math.abs(right-left)>1) return false // 绝对值
// 左右两颗子树都是平衡二叉树
return IsBalanced_Solution(pRoot.left)&&IsBalanced_Solution(pRoot.right)
}
module.exports = {
IsBalanced_Solution : IsBalanced_Solution
};