题目:
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/invert-binary-tree/
给你一棵二叉树的根节点 root ,翻转这棵二叉树,并返回其根节点。
例子:
思路:
我们从根节点开始遍历整个树,然后翻转左右节点。交换左右两颗子数的的位置,即左右互换。
相信一开始学习js的时候这种变量交换的题目大家都做过,首先定义一个中介变量z,然后将变量a赋值给z,再将变量b赋值给a,最后再将变量z赋值给b,就有就可以完成a和b的交换
let a=10
let b=20
let z=a
a=b
b=z
console.log('a',a)
console.log('b',b)
另外ES6有一个可以利用解构赋值简洁地实现变量交换,如下
let a=10
let b=20
[a,b]=[b,a]
console.log('a',a)
console.log('b',b)
这样题目就简单了,代码如下:
function invertTree(root: TreeNode | null): TreeNode | null {
if (!root) return root
invertTree(root.left);
invertTree(root.right);
[root.left, root.right] = [root.right, root.left]
return root
};
结尾:
欢乐的做题时光总是如此短暂,有更好的方法可以评论区分享,下次再见!