题目描述

输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。
核心:利用中序遍历的结果有序的性质,遍历出有序的序列,然后对每个序列将left设置为前一个结点,将right设置为后一个结点
(重点掌握二叉树的遍历递归过程和步骤逻辑)
 1 /**
 2 public class TreeNode {
 3     int val = 0;
 4     TreeNode left = null;
 5     TreeNode right = null;
 6
 7     public TreeNode(int val) {
 8         this.val = val;
 9
10     }
11
12 }
13 */
14
15
16 public class Solution {
17
18     TreeNode head = null;
19     TreeNode res = null;
20
21     public TreeNode Convert(TreeNode TreeNode) {
22
23         InOrder(TreeNode);
24         return res;
25
26
27
28     }
29
30     private void InOrder(TreeNode treeNode) {
31
32         if (treeNode != null) {
33
34             InOrder(treeNode.left);
35
36             if (head == null) {
37
38                 head = treeNode;
39                 res = treeNode;
40
41             } else {
42
43                 head.right=treeNode;
44                 treeNode.left=head;
45                 head=treeNode;
46
47
48             }
49            InOrder(treeNode.right);
50         }
51
52     }
53
54 }

转载于:https://www.cnblogs.com/Octopus-22/p/9473656.html

二叉搜索树与双向链表相关推荐

  1. 剑指offer:面试题36. 二叉搜索树与双向链表

    题目: 二叉搜索树与双向链表 输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的循环双向链表.要求不能创建任何新的节点,只能调整树中节点指针的指向. 为了让您更好地理解问题,以下面的二叉搜索树为例: ...

  2. [二叉树]二叉搜索树转换为双向链表(剑指Offer26)

    [试题描述] 将二叉搜索树转换为双向链表 对于二叉搜索树,可以将其转换为双向链表,其中,节点的左子树指针在链表中指向前一个节点,右子树指针在链表中指向后一个节点. 思路一: 采用递归思想,对于二叉搜索 ...

  3. 【剑指offer】二叉搜索树转双向链表,C++实现

    原创博文,转载请注明出处! # 题目 输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表.要求不能创建任何新的结点,只能调整树中结点指针的指向. 二叉树节点的定义 struct TreeNod ...

  4. 【LeetCode】剑指 Offer 36. 二叉搜索树与双向链表

    [LeetCode]剑指 Offer 36. 二叉搜索树与双向链表 文章目录 [LeetCode]剑指 Offer 36. 二叉搜索树与双向链表 package offer;//定义节点 class ...

  5. java 双向链表_Day26:二叉搜索树与双向链表

    剑指Offer_编程题--二叉搜索树与双向链表 题目描述: 输入一颗二叉搜索树,将该二叉搜索树转换成一个排序的双向链表.要求不能创建任何新的节点.只能调整树中节点指针的指向. 具体要求: 时间限制: ...

  6. 【IT笔试面试题整理】二叉搜索树转换为双向链表

    [试题描述] 将二叉搜索树转换为双向链表 对于二叉搜索树,可以将其转换为双向链表,其中,节点的左子树指针在链表中指向前一个节点,右子树指针在链表中指向后一个节点. 思路一: 采用递归思想,对于二叉搜索 ...

  7. 【重点】剑指offer——面试题27:二叉搜索树与双向链表

    剑指offer--面试题27:二叉搜索树与双向链表 Solution1: 这是书上的代码,要理解好最近几道题,对指针的操作比较多... class Solution { public:TreeNode ...

  8. java面试(二)--(1)EJB的几种类型(2)Hibernate的悲观锁和乐观锁(3) 二叉搜索树与双向链表

    1.请说明一下EJB的几种类型分别是什么? EJB(Enterprise JavaBean)是J2EE服务器端的组件模型,EJB包括会话Bean(Session Bean).实体Bean(Entity ...

  9. 二叉树OJ(一)二叉树的最大深度 二叉搜索树与双向链表 对称的二叉树

    二叉树的最大深度 二叉树中和为某一值的路径(一) 二叉搜索树与双向链表 对称的二叉树 二叉树的最大深度 描述 求给定二叉树的最大深度, 深度是指树的根节点到任一叶子节点路径上节点的数量. 最大深度是所 ...

  10. 【剑指offer-C++】JZ36:二叉搜索树与双向链表

    [剑指offer-C++]JZ36:二叉搜索树与双向链表 题目描述 解题思路 题目描述 描述:输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表.如下图所示: 数据范围:输入二叉树的节点数 0 ...

最新文章

  1. 05后都上清华了!首批丘成桐数学领军人才名单发布,三位菲尔兹奖得主为其授课,周末就来学校报到...
  2. R语言ggplot2可视化使用不连续的y轴、中断的Y轴来可视化数值分布差异很大的数据实战:把数据轴分为两个区间或者多个区间来匹配不同区间数据的可视化(因为有的数据可能10附近,有的数值可能1W附近)
  3. 咏南中间件+开发框架支持最新的DELPHI 10.2 TOKYO
  4. 【Java面试题】39 Set里的元素是不能重复的,那么用什么方法来区分重复与否呢? 是用==还是equals()? 它们有何区别?...
  5. python 获取本机IP的三种方式
  6. 取KindEditor中的textarea的值区不到的解决方案,固定kindEditor的高度
  7. 关于photoshop
  8. 世界级数学家加入华为,曾获菲尔兹奖 网友:终于知道数理化的重要了
  9. java foreach顺序_Java中的LongStream forEachOrdered()方法
  10. ORACLE 11GR2 RAC new features 新特性。
  11. python进阶(课程学习笔记)
  12. 【SSM 1】SpringMVC、Spring和Struts的区别
  13. sql多语句表值函数_构造一个特殊的多语句表函数来检查SQL Server的运行状况
  14. linux mysql 密码策略_Linux Ubuntu 14 MySQL 密码策略(复杂度)和审计插件
  15. Spring揭秘 — IoC
  16. Python周刊520期
  17. idea,as git插件基本操作(插件回滚,撤销,恢复上一个版本)
  18. WinZip 18.0下载地址及注册码
  19. OpenCL 简单概念
  20. 萝卜青菜各有所爱------深谈React和Vue

热门文章

  1. boost::hana::scan_left用法的测试程序
  2. boost::transpose_graph用法的测试程序
  3. Boost:bind绑定数据成员的测试程序
  4. ITK:创建样本测量列表
  5. ITK:Levenberg-Marquardt优化
  6. ITK:从给定的seeds创建距离图
  7. VTK:PolyData之WarpVector
  8. OpenCV注视估计Gaze Estimation的实例(附完整代码)
  9. QDoc文字标记textmarkup
  10. C语言递归算法将十进制转换为二进制(附完整源码)