[路飞]leetcode-110.平衡二叉树

104 阅读1分钟

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

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

一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1 。

 

示例 1:

输入: root = [3,9,20,null,null,15,7]
输出: true

示例 2:

输入: root = [1,2,2,3,3,null,null,4,4]
输出: false

示例 3:

输入: root = []
输出: true

 

解题:

var isBalanced = function (root) {
  return getDep(root) === -1 ? false : true;
  function getDep(node) {
    if (!node) return 0;
    let leftDep = getDep(node.left);
    let rightDep = getDep(node.right);
    if (leftDep === -1 || rightDep === -1) {
      return -1;
    }
    if (Math.abs(leftDep - rightDep) > 1) return -1;
    return Math.max(leftDep, rightDep) + 1;
  }
};