void inSearch(BiTree Thead){//遍历中序线索树,带头结点
BiTNode *p=Thead->lchild;//指向根节点
while(p!=Thead){
while(p->tag==0){
p=p->lchild;
}//找中序第一个结点
printf("%d",p->data);//访问
while(p->tag==1&& p->rchild!=Thead){//p不是最后一个结点
p=p->rchild;
printf("%d",p->data);//访问
}
//带有线索的访问完了,即现在访问过p,及p的前驱了,要找p后继
p=p->rchild;//转向右树
}
}
void inSearch1(BiTree T){//遍历中序线索树,不带头结点
BiTNode *p=T;//指向根节点
while(p){
while(p->tag==0){
p=p->lchild;
}//找中序第一个结点
printf("%d",p->data);//访问
while(p->tag==1&& p->rchild){//不带头结点时候,最后一个结点tag为1,但是右线索为null
p=p->rchild;
printf("%d",p->data);//访问
}
//带有线索的访问完了,即现在访问过p,及p的前驱了,要找p后继
p=p->rchild;//转向右树
}
}
中序线索二叉树遍历(带头结点和不带头结点)
最新推荐文章于 2023-05-24 23:06:46 发布