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

剑指offer 18. 二叉树的镜像

时间:2020-02-23 22:20:28      阅读:52      评论:0      收藏:0      [点我收藏+]

标签:在线   编辑   直接   code   link   oid   size   class   treenode   

18. 二叉树的镜像

题目描述

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

输入描述:

二叉树的镜像定义:源二叉树 
    	    8
    	   /      	  6   10
    	 / \  /     	5  7 9 11
    	镜像二叉树
    	    8
    	   /      	  10   6
    	 / \  /     	11 9 7  5

法一:使用递归

如果结点为空,直接返回,否则递归交换每个结点的左右子树

 1 public class Solution {
 2     // 递归交换每个结点的左右子树
 3     public void Mirror(TreeNode root) {
 4         if(root ==  null){
 5            return ;
 6         }
 7          // 交换左右子树
 8         TreeNode temp = root.left;
 9         root.left = root.right;
10         root.right = temp;
11         // 递归交换左右子树
12         Mirror(root.left);
13         Mirror(root.right);
14     }
15 }

法二:利用层序遍历树

访问结点时候交换左右子树,然后左右子树入队

 1 import java.util.Queue;
 2 public class Solution {
 3     public void Mirror(TreeNode root) {
 4         if(root == null){
 5             return;
 6         }
 7         
 8         // 层序遍历
 9         Queue<TreeNode> Q = new LinkedList<>();
10         Q.offer(root);
11         while(!Q.isEmpty()){
12             // 出队队首元素
13             TreeNode node = Q.poll();
14             // 交换左右子树
15             TreeNode temp = node.left;
16             node.left = node.right;
17             node.right = temp;
18             // 如果孩子不为空,入队
19             if(node.left != null)
20                 Q.offer(node.left);
21             if(node.right != null)
22                 Q.offer(node.right);
23         }
24     }
25 }

牛客网的在线编辑器用使用 Queue 必须手动导包 import java.util.Queue;

 

剑指offer 18. 二叉树的镜像

标签:在线   编辑   直接   code   link   oid   size   class   treenode   

原文地址:https://www.cnblogs.com/hi3254014978/p/12354356.html

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