int ancestor(BiTree T,ElemType x){
Stack S;
InitStack(S);
BiNode *p=T;
BiNode *r=NULL;
while(p||!IsEmpty(S)){
if(p!=NULL){
push(S,p);
p=p->lchild;
}else{
GetTop(S,p);
if(p->rchild&&p->rchild!=r){
p=p->rchild;
}else{
pop(S,p);
if(p->data==x){ //若此时p节点数据为x,则输出栈中所有数据
while(!IsEmpty(S)){
pop(S,p);
printf("%d",p->data);//打印所有祖先
}
}//全部出栈输出后,栈空,结束
r=p;
p=NULL;
}
}
}
}
输出二叉树值为x节点的所有祖先(后续遍历)
最新推荐文章于 2024-07-21 14:33:09 发布