再回首,数据结构——关于线索二叉树的点滴
2015-05-28 11:26
162 查看
最近在复习数据结构,顺便看看大一的时候写的代码,看完之后比当初有了更加深刻的体会。
希望这些能提供给初学者一些参考。
//线索二叉树的结构
typedef struct ThNode
{
ElementType data;
struct ThNode *lchild,*rchild;
int ltag,rtag;
}ThBinNode;
typedef ThBinNode *ThBinTree;
//二叉树 中序 线索化 !!!!!注意理解
pre=NULL;
void InThread(ThBinTree p)
{
if(p!=NULL)
{
InThread(p->lchild);
if(NULL==p->lchild)
{
p->ltag=1;
p->lchild=pre;
}
else
p->ltag=0;
if(pre!=NULL && NULL==pre->rchild)
{
pre->rtag=1;
pre->rchild= p;
}
else if(pre!=NULL)
pre->rtag=1;
pre=p;
InThread(p->rchild);
}
}
//中序线索二叉树 求中序后继结点的算法
ThBinTree InorderNext(ThBinTree p)
{
ThBinTree q;
if(1==p->rtag)
return p->rchild;
else
{
q=p->rchild;
while(!q->rtag)
q=q->lchild;
return q;
}
}
//中序线索二叉树 求中序前驱结点的算法
ThBinTree InorderNext(ThBinTree p)
{
ThBinTree q;
if(1==p->ltag)
return p->lchild;
else
{
q=p->lchild;
while(!q->rtag)
q=q->rchild;
return q;
}
}
希望这些能提供给初学者一些参考。
//线索二叉树的结构
typedef struct ThNode
{
ElementType data;
struct ThNode *lchild,*rchild;
int ltag,rtag;
}ThBinNode;
typedef ThBinNode *ThBinTree;
//二叉树 中序 线索化 !!!!!注意理解
pre=NULL;
void InThread(ThBinTree p)
{
if(p!=NULL)
{
InThread(p->lchild);
if(NULL==p->lchild)
{
p->ltag=1;
p->lchild=pre;
}
else
p->ltag=0;
if(pre!=NULL && NULL==pre->rchild)
{
pre->rtag=1;
pre->rchild= p;
}
else if(pre!=NULL)
pre->rtag=1;
pre=p;
InThread(p->rchild);
}
}
//中序线索二叉树 求中序后继结点的算法
ThBinTree InorderNext(ThBinTree p)
{
ThBinTree q;
if(1==p->rtag)
return p->rchild;
else
{
q=p->rchild;
while(!q->rtag)
q=q->lchild;
return q;
}
}
//中序线索二叉树 求中序前驱结点的算法
ThBinTree InorderNext(ThBinTree p)
{
ThBinTree q;
if(1==p->ltag)
return p->lchild;
else
{
q=p->lchild;
while(!q->rtag)
q=q->rchild;
return q;
}
}
相关文章推荐
- 【译】数据结构中关于树的一切(java版)
- 留个记念,第一次写这么长的存储过程。关于台湾地址excel中数据从一张表中导入另一张不同结构的表!
- 再回首,数据结构——顺序表的常见算法
- 再回首,数据结构——链式队列上的常见操作
- 再回首,数据结构——图的常用术语,邻接矩阵、邻接表存储结构
- (编程训练)再回首,数据结构——无向图的邻接矩阵表示、DFS、BFS
- 关于10月17日#6的五道数据结构题的心得与感悟
- 关于在牛客网上做题的解析之数据结构(每日20道题,记录错误和不懂的题)
- 关于linux内存管理的主要数据结构
- 数据结构关于树的一些递归函数代码
- java数据结构----数据结构之学习的点滴
- [算法]数据结构中关于货郎担路径问题的常用解法,边界路径问题
- 数据结构之树(六)——线索二叉树
- All About JAVA 关于JAVA的几种常用数据结构
- 数据结构5-关于链队列的实例,打印链队列中内容
- 数据结构中你需要知道的关于树的一切
- oracle中关于表的所有操作(创建删除表,修改表结构,创建约束,操作表数据,增删改查等)
- 【数据结构】数据结构再回首之常用排序算法
- 数据结构7-关于“图”的生成与操作的实例
- 再回首,数据结构——以邻接矩阵、邻接表表示的图的深度、广度优先搜索