思路: 平衡二叉树是保证所有节点的左右子树的高度差<1
那么 对于一个节点node,当他为空的时候,h = 0
当他不为空的时候,他的高度h = max(h(node.左子树),h(node.右子树)), 左右子树高度的求法和当前节点node的高度求法一样,于是很容易想到递归,递归的终止条件就是 节点为 空,高度为0
/**
* @param {TreeNode} root
* @return {boolean}
*/
var isBalanced = function(root) {
return deep(root) !== -1
function deep(root){
if(root == null){
return 0
}
let left = deep(root.left)
if(left === -1){
reutrn -1
}
let right = deep(root.right)
if(right === -1 ){
return -1
}
return Math.abs(left - right) > 1 ? -1 : Math.max(left,right) + 1
}
};