后序遍历的非递归代码
void PostOrder(BiTree T)
{ // Add your code here
if(T==NULL) return; //如果为空,则退出
Stack s;
InitStack(s); //初始化栈
BiTNode * p=T; //指向头节点
BiTNode * r=NULL; //辅助指针
while(p||!StackEmpty(s)){ //p不为空或栈不为空
if(p!=NULL){ //p不为空
Push(s,p); //进栈
p=p->lchild; //指向左孩子
}else{
GetTop(s,p); //取栈顶元素
if(p->rchild!=NULL&&p->rchild!=r){
p=p->rchild;
Push(s,p);
p=p->lchild;
}else{
Pop(s,p);
visit(p);
r=p;
p=NULL;
}
}
}
}