【leetcode】110.平衡二叉树

题目
leetcode原题链接
思路
我们可以定义一个求高度的递归函数,当以传入节点为根节点的二叉树是平衡二叉树则返回它的高度,如果不是平衡二叉树则返回-1来表示整棵树已经不是平衡二叉树了。
- 递归函数参数为树的节点,返回值为树的高度或-1
- 递归函数的结束条件是当传入节点为空节点则返回0,表示高度为0
- 单层递归逻辑就是求出左子树的高度和右子树的高度,判断两个高度的差,如果小于等于1,就返回高度值为
1 + Math.max(leftHeight , rightHeight)
,否则返回-1。
代码
var isBalanced = function(root) {
function getHeight(node){
if(!node) return 0
const leftHeight = getHeight(node.left)
if(leftHeight === -1) return -1
const rightHeight = getHeight(node.right)
if(rightHeight === -1) return -1
// 计算高度差
if(Math.abs(leftHeight - rightHeight) <= 1){
return 1 + Math.max(leftHeight , rightHeight)
}else{
return -1
}
}
return getHeight(root) !== -1
};
关注我的专栏,每天更新三道leetcode题解,一起变强!