这个题的两个迭代方法,其实核心逻辑是一样的,只是写法不一样
方法一
这道题,其实不难,但是我写着写着,写迷糊了,比这题解敲出来的代码还报错,主要是还找不到原因,真是服了,➡又对比了一遍发现是括号阔错了 解答一:自顶向下(暴力法) 解题思路: 自顶向下的比较每个节点的左右子树的最大高度差,如果二叉树中每个节点的左右子树最大高度差小于等于 1 ,即每个子树都平衡时,此时二叉树才是平衡二叉树
22行代码,这个括号弄到1后面了,真是低级错误.
方法二
var isBalanced = function (root) {
if (!root) return true;
// 等于-1说明不平衡 不等于-1说明平衡
return helper(root) !== -1;
};
var helper = function (node) {
if (!node) return 0;
const left = helper(node.left);
const right = helper(node.right);
// 这个思路就是判断不平衡
if (left === -1 || right === -1 || Math.abs(left - right) > 1) {
return -1
}
return Math.max(left, right) + 1;
}