剑指Offer 27. 二叉树的镜像
题目链接: 剑指Offer 27. 二叉树的镜像
题目描述:
请完成一个函数,输入一个二叉树,该函数输出它的镜像。
解法思路:
此题本质上就是一个二叉树遍历的问题:在遍历的过程中,交换左右子树即可。
代码:
/**
* Definition for a binary tree node.
* type TreeNode struct {
* Val int
* Left *TreeNode
* Right *TreeNode
* }
*/
//先序遍历
func mirrorTree(root *TreeNode) *TreeNode {
if root == nil {
return root
}
root.Left, root.Right = root.Right, root.Left
mirrorTree(root.Left)
mirrorTree(root.Right)
return root
}
//后序遍历
func mirrorTree(root *TreeNode) *TreeNode {
if root == nil {
return root
}
l := mirrorTree(root.Left)
r := mirrorTree(root.Right)
root.Left, root.Right = r, l
return root
}