后序非递归算法
参照严蔚敏,吴伟明的数据结构的写法
Status PostOrderTraverse(BiTree T, Status(*Visit)(TElemType e)){
Initstack(s); p=t; BiTree pre=null; int flag=0;
while(p||!stackEmpty(s)){
if(p){push(s,p); p=p->lchild; flag= 0;}
else{ if(flag==0&&GetTop(s)->rchild!=pre) { p=GetTop(s)->rchild; flag=1; }
else{ p=pop(s); visit(p); flag=0; pre=p; p=Null; }
}
}
}
\*flag 用来区分是访问左子树还是右子树返回的空
pre指向已经访问的节点避免死循环
*\