110. 平衡二叉树
- 平衡二叉树 是指该树所有节点的左右子树的高度相差不超过 1
- 不必要完全遍历完成,发现不满足的直接 return
- 需要在后序位置计算
var isBalanced = function (root) {
// 记录二叉树是否平衡
let res = true;
// 输入一个节点,返回以该节点为根的二叉树的最大深度
var maxDepth = function (root) {
if (root === null) {
return 0;
}
// 提前结束递归
if (!res) {
return;
}
let leftMaxDepth = maxDepth(root.left);
let rightMaxDepth = maxDepth(root.right);
// 后序遍历位置
// 如果左右最大深度大于 1,就不是平衡二叉树
if (Math.abs(rightMaxDepth - leftMaxDepth) > 1) {
res = false;
}
return 1 + Math.max(leftMaxDepth, rightMaxDepth);
};
maxDepth(root);
return res;
};