二叉树的索引化
typedef char datatype
typedef struct node{
datatype data;
int ltag ,rtag;
struct node *lchild, *rchild;
}binthrnode, *binthrtree;
binthrtree pre = NULL;
binthrtree createbintree()
{
char ch;
binthrtree t;
if((ch=getchar())=='#')
t = NULL:
else{
t = (binthrtree*)malloc(sizeof(binthrtree));
t->data = ch;
t->lchild=createbintree();
t->rchild = createbintree();
}
return t;
}
void inthreading(binthrtree *p){
if(*p){
inthreading(&((*p)->lchild));
(*p)->ltag=((*p)->lchild)?0:1;
(*p)->rtag=((*p)->lchild)?0:1;
if(pre)
{
if(*p)
{
if(pre->rtag==1) pre->rchild = *p;
if((*p)->ltag==1) (*p)->lchild=pre;
}
pre=*p;
inthreading(&((*p)->lchild));
}
}
}
void createthrtree(binthrtree *p)
{
*p = createbintree();
createthrtree(p);
}
int main()
{
binthrtree root;
reatethrtree(&root);
}