二叉查找树转换成有序的双向链表
首先对于二叉查找树的定义和性质,以及如何得到二叉查找树某个节点的子树下的最大值和最小值和插入一个值的内容可以参考这两篇文章:
(1)http://www.cnblogs.com/chenping-987123/archive/2010/09/25/1834341.html
(2)http://www.cnblogs.com/chenping-987123/archive/2010/09/26/1836133.html
现在有一个二叉查找树如下所示:
再insert 9 这个节点的时候
然后可以要输出的双向链表为:1 2 3 4 5 6 9 10 12
关于双向链表的知识,在数据结构的书中都有了很好的解释。
具体的程序如下:
BSTreeToList(root);
Console.WriteLine("********************BSTreeToList***************");
while (root.left != null)
{
root = root.left;
}
while (root != null)
{
Console.Write(root._value.ToString() + " ");
root = root.right;
}
private static void BSTreeToList(MyNode root)
{
if (root.left != null)
{
BSTreeToList(root.left);
}
if (root.right != null)
{
BSTreeToList(root.right);
}
MyNode max = TreeMax(root.left);
MyNode min = TreeMin(root.right);
if (max != null)
{
max.right = root;
}
root.left = max;
if (min != null)
{
min.left = root;
}
root.right = min;
}
转载于:https://www.cnblogs.com/chenping-987123/archive/2010/10/14/1851077.html
二叉查找树转换成有序的双向链表相关推荐
- Lintcode -378. 将二叉查找树转换成双链表
378. 将二叉查找树转换成双链表 将一个二叉查找树按照中序遍历转换成双向链表. 样例 给定一个二叉查找树: 4/ \2 5/ \ 1 3 返回 1<->2<->3<-& ...
- 新手学习算法----二叉树(将一个二叉查找树按照中序遍历转换成双向链表)
题目:将一个二叉查找树按照中序遍历转换成双向链表. 给定一个二叉查找树: 4/ \2 5/ \ 1 3 返回 1<->2<->3<->4<->5. 思路 ...
- 链表问题15——将搜索二叉树转换成双向链表(方法二)
题目 题目同上一篇文章,即题目将二叉树按照中序顺序转换成双向链表 思路 方法二:利用递归函数,不使用任何容器.时间复杂度为O(N),额外空间复杂度为O(h),h为二d d d df叉树的高度 首先需要 ...
- 左神算法:将搜索二叉树转换成双向链表(Java版)
本题来自左神<程序员代码面试指南>"将搜索二叉树转换成双向链表"题目. 题目 对二叉树的节点来说,有本身的值域,有指向左孩子节点和右孩子节点的两个指针:对双向链表的节点 ...
- 二叉树题目----6 二叉树的最近公共祖先 AND 二叉树搜索树转换成排序双向链表
二叉树的最近公共祖先 思路 在左.右子树中分别查找是否包含p或q: 如果以下两种情况(左子树包含p,右子树包含q/左子树包含q,右子树包含p),那么此时的根节点就是最近公共祖先 如果左子树包含p和q, ...
- 将搜索二叉树转换成双向链表
题目: 对二叉树的节点来说,有本身的值域,有指向左孩子和右孩子的两个指针:对双向链表的节点来说,有本身的值域,有指向上一个节点和下一个节点的指针.在结构上,两种结构有相似性,现在有一棵搜索二叉树,请将 ...
- 经典面试题:将有序数组、有序链表转换成平衡二叉树
微信搜一搜:bigsai 大家都在关注的刷题.学习数据结构和算法宝藏项目 关注回复进群即可加入力扣打卡群,欢迎划水. 将有序数组转换成平衡二叉树 将一个按照升序排列的有序数组,转换为一棵高度平衡二叉搜 ...
- 链表问题15——将搜索二叉树转换成双向链表
题目 将一颗搜索二叉树按照中序遍历(左-中-右)的顺序,变成一个有序的双向链表. 所谓的先序遍历.中序遍历和后序遍历都针对的是中间的节点也就是根节点,先序遍历为中-左-右,后序遍历为左-右-中 思路 ...
- 把二元查找树转变成排序的双向链表
题目: 输入一颗二元查找树,将该二元查找树转换成一个排序的双向链表.要求不能创建任何新的结点,只调整指针的指向. 转换成双向链表4=6=8=10=12=14=16 首先,我们定义的二元查找树结点的数据 ...
最新文章
- hdu 1085 Holding Bin-Laden Captive!
- mysql基础(全,必看)
- 20171115_Python学习五周三次课
- [转]emailjs-smtp-client
- ArrayList迭代修改抛出ConcurrentModificationException
- javascript瀑布流效果
- css flex 小记
- bzoj 1690: [Usaco2007 Dec]奶牛的旅行(01分数规划--最优比率环)
- ORBSLAM2在ubuntu20.04上运行,实时单目摄像头(适用高版本的PCL,OpenCV4.2.0等)
- 如何将Eclipse设置为中文简体
- 自己研发的系统给rtx发消息
- opencv GPU加速 多GPU卡指定GPU索引方法
- 【在野利用】Apple Mail多个严重漏洞在野利用通告
- 字节架构师: Kafka 的消费者客户端详解
- MAC系统字体库存放目录
- 简易爬虫实现校园网剩余流量查询
- 江西省信息产业厅 启用RTX腾讯通
- python多线程糗事百科案例
- IntelliJ IDEA全局内容搜索和替换
- 如何让测试团队保持自我驱动力
热门文章
- 网络基础:收集必备的网络基础知识
- 两个不同网段的局域网如何互通_不同网段之间如何通信?
- ctrl z撤销后如何恢复_回收站清空后数据如何恢复?
- Integer 值判断相等
- 总结3:IDEA中使用${pageContext.request.contextPath}填写路径时出错
- Android 第十五课 如何使用LitePal从SQLite数据库中删除数据(十四课用来保留讲解如何向SQLite数据库中存入数据)
- Ubuntu18.04如何让桌面软件默认root权限运行?
- mac 下安装jenkins
- android 4.4以上能够实现的沉浸式状态栏效果
- Java java.lang.SecurityException: Prohibited package name