typedef struct btnode{
TElemType data;
struct btnode *lchild,*rchild;
}BtNode,*BiTree;
typedef struct{
BtNode *ptr;
int rvisited;
}SNode;
void LastOrderTraverse(BiTree bt){
InitStack(S);
while(bt){
p.ptr = bt;
p.rvisited=0;
Push(S, p);
bt = bt->lchild;
}//while
while(!StackEmpty(S)){
GetTop(S,e);
if(!e.ptr->rchild || e.rvisited){
Pop(S,e);
Visit(e);
}else{//e的右孩子节点存在且e没有被遍历
e.rvisited = 1;
p = e.ptr->rchild;
while(p){
q->ptr=p;
q->rvisited=0;
push(S, q);
p = p->lchild;
}//while
}//else
}//while
}//LastOrderTraverse
二叉树的后根遍历非递归算法
最新推荐文章于 2024-07-17 12:11:36 发布