剑指 Offer 27. 二叉树的镜像

226. 翻转二叉树

题目描述

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

输出输出

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

基本思路

  1. 终止条件: 当节点 root为空时(即越过叶节点),则返回 null ;
  2. 递推工作:
    1. 初始化节点 tmp ,用于暂存 root 的左子节点;
    2. 开启递归 右子节点 mirrorTree(root.right) ,并将返回值作为 root的 左子节点 。
    3. 开启递归 左子节点 mirrorTree(tmp),并将返回值作为 root 的 右子节点 。

java实现

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
class Solution {
public TreeNode mirrorTree(TreeNode root) {
if(root == null) return null;
TreeNode tmp = root.left;
root.left = mirrorTree(root.right);
root.right = mirrorTree(tmp);
return root;
}
}

// 原理相同
class Solution {
public TreeNode invertTree(TreeNode root) {
if(root == null) return root;
TreeNode tmp = root.left;
root.left = root.right;
root.right = tmp;
invertTree(root.left);
invertTree(root.right);
return root;
}
}