剑指 Offer 27. 二叉树的镜像

题目

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
请完成一个函数,输入一个二叉树,该函数输出它的镜像。

例如输入:

     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]
 

限制:
0 <= 节点个数 <= 1000

思路

我们可以在原来的数组上进行转换,寻找子问题,我们可以先转换叶子节点,然后逐层向根节点转换。这就是典型的递归的思维

实现

1
2
3
4
5
6
7
8
9
10
11
private static class Solution {
public TreeNode mirrorTree(TreeNode root) {
if (root == null){
return null;
}
TreeNode tempNode = root.left;
root.left = mirrorTree(root.right);
root.right = mirrorTree(tempNode);
return root;
}
}