226. 翻转二叉树
原题链接
翻转一棵二叉树。
示例:
输入:
4
/ \
2 7
/ \ / \
1 3 6 9
输出:
4
/ \
7 2
/ \ / \
9 6 3 1
备注:
这个问题是受到 Max Howell 的 原问题 启发的 :
谷歌:我们90%的工程师使用您编写的软件(Homebrew),但是您却无法在面试时在白板上写出翻转二叉树这道题,这太糟糕了。
要点
比对一下题目这两个代码图片。如果按每一层来看的话,就是把结点的左右两侧子树进行交换
第二层交换
4
/ \
7 2
/ \ / \
6 9 1 3
第三层交换
4
/ \
7 2
/ \ / \
9 6 3 1
递归
代码片段
func invertTree(root *TreeNode) *TreeNode {
if root == nil {
return nil
}
root.Left, root.Right = root.Right, root.Left
if root.Left != nil {
invertTree(root.Left)
}
if root.Right != nil {
invertTree(root.Right)
}
return root
}
代码解释
先序遍历的过程,只是这个额外做了交换操作。
来源:CSDN
作者:内脏裂了
链接:https://blog.csdn.net/weixin_42322309/article/details/104115582