[LeetCode226. 翻转二叉树][简单] | 刷题打卡

173 阅读1分钟

掘金团队号上线,助你 Offer 临门! 点击 查看详情

一、题目描述:

翻转一棵二叉树。

示例:

输入:

     4
   /   \
  2     7
 / \   / \
1   3 6   9

输出:

     4
   /   \
  7     2
 / \   / \
9   6 3   1

备注: 这个问题是受到 Max Howell 的 原问题 启发的 :

谷歌:我们90%的工程师使用您编写的软件(Homebrew),但是您却无法在面试时在白板上写出翻转二叉树这道题,这太糟糕了。

链接:leetcode-cn.com/problems/in…

二、思路分析:

从根节点开始,左右节点需要翻转,并且左右节点的子树节点都要翻转。 这里可以沿用递归的思路,先从子节点为null的左右树节点翻转,一层一层,直到整个树被翻转

三、AC 代码:

var invertTree = function(root) {
    if(root === null){
        return root
    }
    invertTree(root.left)
    invertTree(root.right)

    let temp = root.left
    root.left = root.right
    root.right = temp
    return root
};

四、总结:

遍历到null节点时,不用翻转,直接返回它本身

这里还有其他思路,例如BFS写法,可以参考这里

本文正在参与掘金团队号上线活动,点击 查看大厂春招职位