反转二叉树----java实现_囧囧有神璐璐的博客-程序员宝宝

技术标签: java  

实现二叉树的反转

示例:

原二叉树:

     4
   /   \
  2     7
 / \   / \
1   3 6   9
反转后的二叉树:
     4
   /   \
  7     2
 / \   / \
9   6 3   1

代码实现:(递归)
思路:1.判断根是否为空,根为空直接返回根;否则继续;
      2.递归反转根的左右子树

[java]   view plain   copy
  1. public TreeNode invertNode(TreeNode root) {  
  2.                 if(root==null)  
  3.                     return root;  
  4.         TreeNode temp=root.left;  
  5.         root.left=invertNode(root.right);  
  6.         root.right=invertNode(temp);  
  7.         return root;  
  8.     }  


代码实现:(非递归)
思路:1.判断根是否为空,根为空直接返回根;否则继续;
            2.交换根节点的左右子节点;
            3. 交换第二层结点的左右子树;
            4 重复下去,最后一个结点。

[java]   view plain   copy
  1. public TreeNode invertNode(TreeNode root) {  
  2.         if(root==null)  
  3.             return null;          
  4.         Queue<TreeNode> queue=new LinkedList<TreeNode>();  
  5.         queue.add(root);  
  6.         while(queue!=null){  
  7.             TreeNode current=queue.poll();  
  8.             TreeNode temp=current.left;  
  9.             current.left=current.right;  
  10.             current.right=temp;  
  11.             if(current.left!=null)  
  12.                 queue.add(current.left);  
  13.             if(current.right!=null)  
  14.                 queue.add(current.right);  
  15.         }  
  16.         return root;          
  17.     }  
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/u012516166/article/details/80421767

智能推荐

注册域名时如何填写域名信息_珣星云入域名是什么_新来小小小菜鸟的博客-程序员宝宝

目前国内域名注册规则越来越详细,要求也越来越严格,所以说大家在国内注册域名时一定要如实填写,这样才能正常使用。下面总结一些域名注册的要求和经验,帮助大家正确注册域名。一、注册域名时乱写信息可以吗?注册域名要填写自己的真实信息,千万不要乱填!1、国际域名管理机构 ICANN 要求域名注册时必须填写所有人的真实信息,如果信息不实,ICANN 有权注销。ICANN是国际域名顶级管理和裁判机构,拥有域名的最终裁判权。2、万一的域名发生纠纷或被盗,因为域名注册信息是乱写的,作为真正的域名持有者就会很被动,无.

Ajax样式的删除提示_忆尘的博客-程序员宝宝

用户控件ucDeleteConfirmation.ascx     DefaultButton="btnYes" HorizontalAlign="Left">

The installer encountered an unrecoverable error.Ubuntu13.04安装时遇到的问题_yongyh001的博客-程序员宝宝

今天使用Vmware Workstation 15安装Ubuntu 13.04 32位的镜像时遇到了一个问题,描述如下:The installer encountered an unrecoverable error. A desktop session will now be run so that you may investigate the problem or try installi...

1. 输出规定的" * " 图案 2.输出0 - 999之间的水仙花数_殇&璃的博客-程序员宝宝

1.在屏幕上输出以下图案:#include&lt;stdio.h&gt;#include&lt;stdlib.h&gt;//这里用函数写输出的相关代码可以简化主函数中循环的代码,用起来还是很香的~void output(int n) { for (int i = 1; i &lt;= n; i++) { printf("*"); } printf("\n");}int ...

python编辑已存在的excel坑: BadZipFile: File is not a zip file_weixin_33722405的博客-程序员宝宝

背景-原代码如下,期望能自动创建excel,并且可以反复调用编辑:import xlwt,osfrom openpyxl.styles import Font, colorsclass Write_excel(object): """修改excel数据""" def __init__(self, filename): self.filename = filenam...

随便推点

持续集成服务器(CruiseControl)安装和配置_dianzhenggu6025的博客-程序员宝宝

1、下载安装我使用的是CruiseControl-2.8.4CruiseControl:http://cruisecontrol.sourceforge.net/SVN:http://subversion.tigris.org/首先安装你的CruiseControl,压缩文件直接解压即可,然后设置你的环境变量,将svn添加到你的环境变量的path中。安装后Crui...

【Arma3脚本教程】一、基本介绍_arma3代码_略游的博客-程序员宝宝

想必看到此文章的人想要学习Arma3的地图编辑,不过国内很少有人研究这个,即使会的也不是专业程序员,即使是专业程序员,也需要花不少时间学习它的特定写法。如果你高中以上学历,英语及格,逻辑水平还行,应该可以看懂本教程。另外欢迎加群讨论:762195010。废话不多说开始。

AI+科学计算-昇思MindSpore都给我们带来哪些惊喜?_码农飞哥的博客-程序员宝宝

昇思MindSpore:“AI时代的基石”是如何炼成的?AI框架之力初显:它山之石,可以攻玉

ORA-15041 IN A DISKGROUP ALTHOUGH FREE_MB REPORTS SUFFICIENT SPACE_congnen9588的博客-程序员宝宝

ORA-15041 IN A DISKGROUP ALTHOUGH FREE_MB REPORTS SUFFICIENT SPACE [ID 460155.1]修改时间 ...

Vite中使用ArcGIS API for JavaScript 4.18_arcgis api vite_码农阿焦的博客-程序员宝宝

这篇文章将会介绍如何使用在使用Vite初始化的vue3项目中使用ArcGIS API for JavaScript 4.18来进行GIS项目开发。1. ArcGIS API for JavaScript 4.18 简介ArcGIS API for JavaScript的4.18版本相比于4.17版本的变化主要的更新内容如下:支持ES Module(Beta版本)方式调用,同时也支持AMD方式的调用,两种方式调用的功能都是一样的;支持对点聚类的查询,通过对点聚类的查询,可以实现查询点聚类的统计信息、

推荐文章

热门文章

相关标签