给定一个二叉树,判断它是否是高度平衡的二叉树。
本题中,一棵高度平衡二叉树定义为:
一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1 。
3
/ \
9 20
/ \
15 7
解题思路
这题通过递归的方式,计算左右子树的高度
当左右子树的高度差比1大,则二叉树不是平衡二叉树
代码
var getHeight = function(root) {
if (!root) return 0
let l = getHeight(root.left)
let r = getHeight(root.right)
if (l < 0 || r < 0) return -1
if (Math.abs(l - r) > 1) return -1
return Math.max(l, r) + 1
}
var isBalanced = function(root) {
return getHeight(root) >= 0
};