226. 翻转二叉树 简单
翻转一棵二叉树。
示例:
输入:
4
/ \
2 7
/ \ / \
1 3 6 9
输出:
4
/ \
7 2
/ \ / \
9 6 3 1
备注:
这个问题是受到 Max Howell 的 原问题 启发的 :
谷歌:我们90%的工程师使用您编写的软件(Homebrew),但是您却无法在面试时在白板上写出翻转二叉树这道题,这太糟糕了。
代码参考:
package main
import "fmt"
func main() {
tree := &Tree{}
tree.root = &TreeNode{Val: 4}
for _, v := range []int{2, 7, 1, 3, 6, 9} {
tree.BFSInsert(v)
}
tree.BFSTraverse(tree.root) // 4 2 7 1 3 6 9
fmt.Println()
invertTree(tree.root)
tree.BFSTraverse(tree.root) // 4 7 2 9 6 3 1
}
// 反转二叉树其实是镜像翻转 swap 节点操作
func invertTree(root *TreeNode) *TreeNode {
if root == nil {
return nil
}
invertTree(root.Left)
invertTree(root.Right)
swapNode := root.Left // 镜像翻转
root.Left = root.Right
root.Right = swapNode
return root
}
最后编辑: kuteng 文档更新时间: 2021-06-05 10:16 作者:kuteng