一、题目描述
给定一个二叉树,判断它是否是高度平衡的二叉树。
本题中,一棵高度平衡二叉树定义为:
一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过1。
二、示例
三、解题思路
主要的思路是用递归的思路,我们用返回的值的大小作为最后判断的依据,如果满足条件(左右子树高度差小于1)的话返回左右子树高度的最大值加一,否则返回-1.
四、代码
/**
* Definition for a binary tree node.
* function TreeNode(val) {
* this.val = val;
* this.left = this.right = null;
* }
*/
/**
* @param {TreeNode} root
* @return {boolean}
*/
var isBalanced = function(root) {
return height(root)>=0
};
var height = (root)=>{
if(root == null ){
return 0
}
let lr = height(root.left)
let rr = height(root.right)
console.log(lr,rr)
if(lr>=0&&rr>=0&&Math.abs(lr-rr)<=1){
return Math.max(lr,rr)+1
}
else{
return -1
}
}