一、题目

  输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。

二、思路

对二叉搜索树中序遍历的结果即为排序的结果,在中序遍历的过程中,建立双向指针。详细过程见代码注释。

三、代码

public class Solution {

    TreeNode tempHead = null; //
TreeNode realHead = null; //保存双向链表的头结点 public TreeNode Convert(TreeNode pRootOfTree) {
//如果头结点为空,返回null
if (pRootOfTree == null) {
return null;
} //转换
ConvertMethod(pRootOfTree); //返回双向链表的头结点
return realHead;
} //采用递归的方法进行中序遍历,遍历过程中,建立头结点和下一个节点的双向指针
public void ConvertMethod(TreeNode pRootOfTree) {
//递归遍历左节点
if (pRootOfTree.left != null) {
ConvertMethod(pRootOfTree.left);
} //建立根节点与下一个节点的双向指针
if(tempHead==null){ //第一次运行的时候,头结点为空,初始化头结点
tempHead=pRootOfTree;//用于记录当前头结点
realHead=pRootOfTree;//用于记录双向链表的头结点
}else { //第一次运行以后,建立tempHead节点与其下一个节点的双向指针
//建立当前头结点与下一个节点的双向指针
tempHead.right = pRootOfTree;
pRootOfTree.left = tempHead; tempHead = pRootOfTree; //当前头节点后移一位
} //递归遍历右节点
if (pRootOfTree.right != null) {
ConvertMethod(pRootOfTree.right);
} }
}
public class TreeNode {
int val = 0;
TreeNode left = null;
TreeNode right = null; public TreeNode(int val) {
this.val = val; } }

------------------------------------------------------

参考链接:https://www.nowcoder.com/questionTerminal/947f6eb80d944a84850b0538bf0ec3a5

最新文章

  1. centos 下测试网速
  2. maven Ubuntu14.04 安装
  3. Delphi XE的firemonkey获取当前文件所在路径的方法
  4. HttpWebRequest与HttpWebResponse使用例子(转)
  5. 开源软交换系统 FreeSwitch 与 Asterisk 比较
  6. Oracle SQL函数之日期函数
  7. Android SQLiteDatabase使用总结
  8. JavaScript面向对象编程(二)构造函数和类
  9. Cordova的搭建
  10. [译]ASP.NET Core 2.0 路由引擎
  11. 【转】教你开发jQuery插件
  12. 【Springboot】Springboot整合Thymeleaf模板引擎
  13. swoole 版本查看
  14. 分享一款Markdown的css样式
  15. .NET Core开发日志——Linux版本的SQL Server
  16. SQLServer 的case when语句使用实现统计
  17. 浅谈 Adaboost 算法
  18. matlab之simulink仿真入门
  19. 20145104张家明 《Java程序设计》第7周学习总结
  20. reflect 机制

热门文章

  1. 手机PC文件传输
  2. VS2010/MFC编程(对话框:模态对话框及其弹出过程)
  3. (二)spring-mvc-showcase 和 swagger-springmvc 的恩恩怨怨
  4. python socket.error: [Errno 10061]
  5. 一个用css写出来的下拉菜单
  6. 基于MATLAB的均值滤波算法实现
  7. java web 通过前台输入的数据(name-value)保存到后台 xml文件中
  8. MySQL中不允许使用列别名作为查询条件
  9. 【Win2D】【译】Win2D 快速入门
  10. Python学习-36.Python中的字典解释