您的位置:首页 > 理论基础 > 数据结构算法

再回首,数据结构——关于线索二叉树的点滴

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;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  数据结构