事情是这样的,今日突发奇想心血来潮想做反转二叉树
然后我就这么想当然地写了
- 错误示例
var invertTree = function(root) {
if (!root) return root;
root.left = invertTree(root.right);
root.right = invertTree(root.left);
return root;
};
然后我发现结果不对
- 正解
var invertTree = function(root) {
if (!root) return root;
[root.left,root.right] = [invertTree(root.right),invertTree(root.left)];
return root;
};
- babel转换
可以看到数组的解构赋值,是把结果都算完了才一一赋值,而不是算一个赋值一个。 - 不用数组结构的写法
var invertTree = function(root) {
if (!root) return root;
const right = invertTree(root.right);
const left = invertTree(root.left);
root.left = right;
root.right = left;
return root;
};