前端-每天一道算法题-004:翻转二叉树

246 阅读1分钟

题目:

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/invert-binary-tree/

给你一棵二叉树的根节点 root ,翻转这棵二叉树,并返回其根节点。

例子:

例子.png

思路:

我们从根节点开始遍历整个树,然后翻转左右节点。交换左右两颗子数的的位置,即左右互换。

相信一开始学习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) 

consolelog.png

另外ES6有一个可以利用解构赋值简洁地实现变量交换,如下

    let a=10
    let b=20
    [a,b]=[b,a]
    console.log('a',a) 
    console.log('b',b) 

1111.png

这样题目就简单了,代码如下:

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

结尾:

欢乐的做题时光总是如此短暂,有更好的方法可以评论区分享,下次再见!