后序非递归遍历打印从根节点到某一结点的路径
这是后序非递归遍历打印从根节点到某一结点的路径为什么传入一个结点的字符不能运行,而在程序中直接判断字符可以运行
void postorder(BiTree T,char x){
sqstack S;
BiTree p=T;
initstack(S);
while(p!=NULL||!stackempty(S)){
while(p!=NULL){
p->flag=1;
push(S,p);
p=p->lchild;
}
if(!stackempty(S)){
pop(S,p);
if(p->flag==1){
p->flag=2;
push(S,p);
p=p->rchild;
}
else{
visit(p->data);
if(p->data==x)break;
p=NULL;
}
}
}
destroystack(S);
}
void postorder(BiTree T){
sqstack S;
BiTree p=T;
initstack(S);
while(p!=NULL||!stackempty(S)){
while(p!=NULL){
p->flag=1;
push(S,p);
p=p->lchild;
}
if(!stackempty(S)){
pop(S,p);
if(p->flag==1){
p->flag=2;
push(S,p);
p=p->rchild;
}
else{
visit(p->data);
if(p->data=='E')break;
p=NULL;
}
}
}
destroystack(S);
}