js(59)~[110] 平衡二叉树

105 阅读1分钟

这个题的两个迭代方法,其实核心逻辑是一样的,只是写法不一样

方法一

这道题,其实不难,但是我写着写着,写迷糊了,比这题解敲出来的代码还报错,主要是还找不到原因,真是服了,➡又对比了一遍发现是括号阔错了 解答一:自顶向下(暴力法) 解题思路: 自顶向下的比较每个节点的左右子树的最大高度差,如果二叉树中每个节点的左右子树最大高度差小于等于 1 ,即每个子树都平衡时,此时二叉树才是平衡二叉树

image.png 22行代码,这个括号弄到1后面了,真是低级错误.

方法二

image.png

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;
}

力扣本题传送门