问题:求二叉树中根结点到P结点的路径
void path(char ch)
{
int top=-1;
int tag[100];
BiNode *A[100];//模拟栈
BiNode *T=root;
while(T!=NULL||top!=-1)
{
while(T!=NULL)//扫描左子树
{
top++;
A[top]=T;
tag[top]=0;
T=T->lchild;
}
while(top!=-1&&tag[top]==1)//左右子树均访问过
{
T=A[top];
if(T->data==ch)//找到P结点
{
cout<<A[0]->data;
for(int i=1;i<=top;i++)
cout<<"->"<<A[i]->data;
cout<<endl;
return;
}
else//访问结点
{
top--;
T=A[top];
}
}
if(T==NULL&&top!=-1)//开始扫描右子树
{
T=A[top];
T=T->rchild;
tag[top]=1;
}
else if(top!=-1)
{
T=T->rchild;
tag[top]=1;
}
}
}