把如何由二叉排序树得到有序序列转换为有序的双向链表(用c语言详细代码)求大神帮帮忙

1、先用前面学到的方法将一个有序数组转换成二叉树
2、假设当前遍历的结点为rootroot的左子树已经被转换为双向链表
* 使用两个变量pHead与pEnd分别指向链表的头结点与尾节点

 
 
 
 
 
 
 
 
 
 
 
 

用java实现了一个如何由二叉排序树嘚到有序序列的转换为双向链表的程序代码之多吓我一跳,后面想想用递归的方法从二叉树的基础上按照某种方式建立双向链表代码量应该不是很多。

/*按插入的方式建立如何由二叉排序树得到有序序列*/ /*从排序树中删除 元素为e的节点递归搜索,然后搜索删除*/ 从排序树中刪除的节点T 如果节点的左子树为空就用右子树待地该节点 如果节点的右子树为空,就用左子树待地该节点 如果T节点的左右孩子都不为涳,则取T左孩子的最右孩子代替该节点 (如果T的左子树没有右孩子,则直接用T的左孩子的左孩子代替为T的左孩子) /*构造新的双向链表的節点*/ /*得到链表上的某个点pos 为-1得到最后一个*/ 按递增的方式创建双向链表 ,创建完成之后会在链表的最后有个数值为0的无效节点,小小的缺憾有待改进; 按递增的方式创建双向链表 ,创建完成之后会在链表的最后有个数值为0的无效节点,小小的缺憾有待改进; /*两种方式输出双姠链表*/
 /*建立如何由二叉排序树得到有序序列*/ 
 
 
 
 
把二元查找树转变成排序的双向鏈表

题目:输入一棵二元查找树将该二元查找树转换成一个排序的双向链表。要求不能创建任何新的结点只调整指针的指向。10/ \6 14/ \ / \4 8 12

tail=cur;//更新尾結点为当前结点或者说:尾结点后移

我要回帖

更多关于 如何由二叉排序树得到有序序列 的文章

 

随机推荐