您的位置:首页 > 其它

中序线索化二叉树

2009-08-07 08:16 120 查看
typedef enum{Link,Thread} PointerTag ; //枚举值Link和Thread分别表示0和一

typedef struct node

{

DataType data;

PointerTag lTag,rTag;//左右标志位

struct node *lchild,*rchid;



}BinThrNode;

typedef BinThrNode *BinThrTree;

BinThrNode *pre = NULL//全局量

void InorderThreading(BinThrTree p)

{

//将二叉树p线索化

if(p)//p为非空的时候。当前访问的结点是*p

{

InorderThreading(p->lchild)//左子树线索化

p->lTag=(p->lchild)?Link:Thread;

p->rTag=(p->rchild)?Link:Thread;

if(pre)//若*p的前驱*pre存在

{

if(pre->rTag==Thread)

pre->rchild == p;

if(pre->lTag==Thread)

pre->lchild== p;

}

pre=p;

InorderThreading(p->rchild);

}

}

还是递归的算法 , 书本不是很纤细 自考的书 哎 没办法
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: