求大佬注释,这个非递归后序遍历求二叉树结点路径的算法有点看不懂
程序代码:
void search(BiTree bt,BiTNode *ch) { BiTNode *stack[num]; int tag[num]; int i,top; int find; BiTNode *s; find=FALSE; top=0; s=bt; do { while(s!=NULL) { top++; stack[top]=s; tag[top]=0; s=s->lchild; } if(top>0) { s=stack[top]; if(tag[top]==1) {if(s==ch) { for(i=1;i<=top;i++) printf("->%c",stack[i]->data); find=TRUE; } else top--; s=stack[top]; } if(top>0 && !find) { if(tag[top]!=1) { s=s->rchild; tag[top]=1; } else s=NULL; } } }while(!find && top!=0); }