博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
中序线索二叉树算法 解决 把二元查找树转变成排序的双向链表
阅读量:6881 次
发布时间:2019-06-27

本文共 1385 字,大约阅读时间需要 4 分钟。

1.中序线索二叉树算法,源自本科教材《数据结构》

 

typedef struct ThreadTNode{  elemtype data;  struct ThreadTNode *lchild, *rchild;  int ltag, rchild;}ThreadTNode, *ThreadTree void CreateInThread ( ThreadTree T ){   ThreadTree pre = NULL;   if( T != NULl )   {      InThread( T, pre );      pre->rchild = NULL;      pre->rtag = 1;   }}void InThread ( ThreadTree p, ThreadTree pre ){   if( p )   {      InThread ( p->lchild, pre );//说pre是前驱标记是正确的,说它是后继标记也是正确的,      if( p->lchild == NULL )      {         p->lchild = pre;         p->ltag = 1;      }      if( pre && pre->rchild == NULL )      {         pre->rchild = p;         pre->rtag = 1;      }      pre = p;      InThread( p->rchild, pre );   }}

 

2.把二元查找树转变成排序的双向链表,源自微软的笔试题

 

1 typedef struct BSTNode 2 { 3   elemtype data; 4  5   struct BSTNode *lchild, *rchild; 6  7 }BSTNode, *BSTree 8  9 void Convert( BSTree T ) 10 {11    if( T )12    {13       BSTree tail = NULL; //把前驱后继指针标记看做链表的尾结点指针很恰当,所以命名为tail14 15       ConvertBST( tail, T ); // 把T转换成链表后连接到tail上,tail为链表当前尾结点指针16  17       tail->rchild = NULL;18    }19 }20 21 void ConvertBST( BSTree tail, BSTree p )22 {23    if( p )24    {25       ConvertBST( tail, p->lchild );26 27       p->lchild = tail;28 29 30       if( tail )31         tail->rchild = p;32   33       tail = p;34 35       ConvertBST( tail, p->rchild );36    }37 }

转载于:https://www.cnblogs.com/kevinGaoblog/archive/2012/04/04/2431759.html

你可能感兴趣的文章
关于如何显示Jianshu图片的方案
查看>>
05_打字游戏
查看>>
10款.net 图形插件
查看>>
Python实现装饰模式的一段代码
查看>>
Atitit dsl实现(1)------异常的库模式实现 异常的ast结构
查看>>
系统管理命令
查看>>
关于JavaScript定时机制的总结
查看>>
linux命令 common 文件比较
查看>>
[km] 如何判断一个直播系统是否使用的是RTMP
查看>>
unity, ugui input field
查看>>
源码解读这半年
查看>>
MySQL连接线程kill利器之pt-kill
查看>>
JS设置cookie、读取cookie、删除cookie
查看>>
Linux列出安装过的程序
查看>>
联系E-R:学生选课系统
查看>>
053 关于hive的存储格式
查看>>
Web性能压力测试工具之Apache AB 详解
查看>>
自动完成标签
查看>>
C# GDI+ 实现橡皮筋技术
查看>>
MYSQL日期和时间函数
查看>>