掘金团队号上线,助你 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写法,可以参考这里
本文正在参与掘金团队号上线活动,点击 查看大厂春招职位