线索二叉树几个问题。
/***建立线索二叉树
*/
void
creat_threadtree(TNode *p)
{
if(p){
creat_threadtree(p->lchild);
if(p->lchild==NULL){
p->ltag=thread;
p->lchild=pre;//pre指什么,头节点吗,还是p的左孩子。
}
if(pre->rchild==NULL){//pre的右孩子,指的是什么,
pre->rtag=thread;
pre->rchild=p;//为什么指向根
}
pre=p;../这一句又为什么赋值。。。
creat_threadtree(p->rchild);
}
}
/*
**输出二叉树中的值
*/
void
show_tree(TNode *T)
{
TNode *p;
p=T->lchild;
while(p!=T){
while(p->lchild!=NULL)p=p->lchild;
printf("%c",p->data);
while(p->rtag==thread&&p->rchild!=T){//为什么p的rtag==thread 打印右孩子
p=p->rchild;
printf("%c",p->data);
}
p=p->rchild;
}
}
int
main()
{
TNode *T;
T->ltag=link;
T->lchild=creat_tree();
pre=T;
creat_threadtree(T->lchild);
show_tree(T);
return 0;
}