剑指Offer 二叉树的镜像

Posted wjq2017

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了剑指Offer 二叉树的镜像相关的知识,希望对你有一定的参考价值。

  题目描述:操作给定的二叉树,将其变换为源二叉树的镜像。

  题目链接:二叉树的镜像

  思路:通过BFS来遍历每个结点,交换当前结点的左右孩子结点即交换左右子树。

  步骤:

  1 如果根结点为空或者只有一个结点,则结束。

  2 创建实现了Queue接口的LinkedList对象。

  3 根结点入队列。

  4 通过BFS来遍历每个结点,交换当前结点的左右孩子结点。

  Java代码:

 1 import java.util.Queue;
 2 import java.util.LinkedList;
 3 /**
 4 public class TreeNode {
 5     int val = 0;
 6     TreeNode left = null;
 7     TreeNode right = null;
 8 
 9     public TreeNode(int val) {
10         this.val = val;
11 
12     }
13 
14 }
15 */
16 public class Solution {
17     public void Mirror(TreeNode root) {
18         if (root == null || (root.left == null && root.right == null)) {
19             return;
20         }
21         
22         // 递归实现,交换左右子树
23         /**TreeNode temp = root.left;
24         root.left = root.right;
25         root.right = temp;
26         
27         Mirror(root.left);
28         Mirror(root.right);**/
29         
30         Queue<TreeNode> queue = new LinkedList<TreeNode>();
31         queue.add(root);
32         
33         while (true) {
34             if (queue.isEmpty()) {
35                 break;
36             }
37             
38             while (!queue.isEmpty()) {
39                 TreeNode cur = queue.remove();
40                 
41                 TreeNode left = cur.left;
42                 TreeNode right = cur.right;
43                 
44                 // 避免都是null
45                 if (left != right) {
46                     if (left != null) {
47                         queue.add(left);
48                     }
49                     if (right != null) {
50                         queue.add(right);
51                     }
52                     
53                     TreeNode temp = left;
54                     cur.left = right;
55                     cur.right = temp;
56                 }
57             }
58         }
59     }
60 }

 

以上是关于剑指Offer 二叉树的镜像的主要内容,如果未能解决你的问题,请参考以下文章

剑指offer——二叉树的镜像

剑指offer--27二叉树的镜像

剑指offer-(16)二叉树的镜像

《剑指Offer——二叉树的镜像》代码

剑指Offer 二叉树的镜像

剑指offer:面试题19二叉树的镜像