剑指offer_【18】二叉树的镜像

1.题目描述

操作给定的二叉树,将其变换为源二叉树的镜像。

二叉树的镜像定义:

        8

     /      \

   6         10

 /   \     /    \

5     7    9     11   

镜像二叉树

           8

       /       \

    10             6

  /    \         /    \

11      9       7       5

2.解题思路

(1)镜像即左右子树交换位置,故交换左子树右子树位置

(2)交换后的左右子树的节点保持原来的顺序,故要交换左右子树自己的左右子树

(3)终止条件为root==null || root.left==null ||root.right == null

3.代码

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
27
28
29
30
31
32
33
/*
public class TreeNode {

int val = 0;
TreeNode left = null;
TreeNode right = null;

public TreeNode(int val) {
this.val = val;
}
}
*/

public class Solution {

public void Mirror(TreeNode root) {

if(root!=null&&(root.left!=null||root.right!=null)){
//这三句是左子树跟右子树交换
TreeNode tem=root.left;

root.left=root.right;
root.right=tem;
//然后将根节点换成root.left

Mirror(root.left);
//然后将根节点换成root.right

Mirror(root.right);
}

}
}
文章目录
  1. 1. 1.题目描述
  2. 2. 2.解题思路
  3. 3. 3.代码
| 139.6k