二叉树中根节点
到所有值为x的结点
的路径
void search_path(BTNode* p,int x){
BTNode* S[LEN]; //定义工作栈
int top=-1; //栈顶指针
BTNode* r=NULL; //指向最近访问过的节点
while(top>=0 || p){
//栈空p空 停止循环
while(p){ //移最左下
S[++top]=p;
if(p->data==x){
//找到目标结点
cout<<"path: ";
for(int i=0;i<=top;i++) visit(S[i]);
cout<<";"<<endl;
// exit(0); 加上这个语句就是只找一个
}
p=p->lchild;
}
while(top>=0 && S[top]->tag==1){ //访问标记
// visit(S[top]);
top--;
}
if(top>=0){
S[top]->tag=1; //标记栈顶
p=S[top]->rchild; //转右子树