[路飞]_leetcode_110. 平衡二叉树

72 阅读1分钟

给定一个二叉树,判断它是否是高度平衡的二叉树。

本题中,一棵高度平衡二叉树定义为:

一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 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
};