码迷,mamicode.com
首页 > 其他好文 > 详细

剑指Offer 二叉树的镜像

时间:2018-02-19 11:14:22      阅读:208      评论:0      收藏:0      [点我收藏+]

标签:this   二叉树的镜像   lis   blank   sof   bfs   rank   roo   target   

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

  题目链接:二叉树的镜像

  思路:通过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 二叉树的镜像

标签:this   二叉树的镜像   lis   blank   sof   bfs   rank   roo   target   

原文地址:https://www.cnblogs.com/WJQ2017/p/8453586.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!