var isBalanced = function(root) {
if(!root){return true}
return defs(root) !== -1
};
// 计算树的深度
var defs = function(node) {
if(!node) {
return 0
}
// 计算左子树深度
const left = defs(node.left)
// 计算右子树深度
const right = defs(node.right)
switch(true) {
// 如果左子树为 -1 则返回 -1
case left === -1:
return -1
// 如果右子树为 -1 则返回 -1
case right === -1:
return -1
// 如果左右子树的深度差大于1 则返回 -1
case Math.abs(left - right) > 1:
return -1
default:
// 取左右子树中深度较大的值 + 1 返回
return Math.max(left, right) + 1
}
}
后续遍历