剑指 Offer 27. 二叉树的镜像

1434人浏览 / 0人评论

题目

请完成一个函数,输入一个二叉树,该函数输出它的镜像。

例如输入:

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

镜像输出:

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

示例 1:

输入:root = [4,2,7,1,3,6,9]
输出:[4,7,2,9,6,3,1]

题解

二叉树的镜像,即将二叉树中每个节点的左右节点进行交换,因此考虑递归遍历二叉树,并交换左右节点

s1.png
s2.png
s3.png
s4.png
s5.png

代码

func mirrorTree(root *TreeNode) *TreeNode {
	if root == nil {
		return root
	}
	// 此处需要暂存递归结果,待左右子树全部递归完成进行交换
	left := mirrorTree(root.Left)
	right := mirrorTree(root.Right)

	root.Left = right
	root.Right = left
	return root
}

全部评论