给定一个二叉树,判断它是否是高度平衡的二叉树。
本题中,一棵高度平衡二叉树定义为:力扣原文
一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 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;
}
};