/*
给数的结点增加一个访问次数(visit)属性
遍历左子树,依次入栈
到底后出栈一个元素,判断访问次数是否为2
若不是,则访问次数为1,访问次数+1,再次入栈,T指向右子树(访问右子树),进入下次循环
若是,则输出,T指向空(左右子树都访问了),进入下次循环
*/
void PostOrderTraversal(BinTree BT)
{
BinTree T BT;
Stack S=CreatStack(Maxsize);
while(T||!IsEmpty(s)){
while(T){
T->visit++;//visit初值为0
Push(S,T);
T=T->Left;
}
if(!isEmpty(S)){
T=Pop(S);//出栈判断
if(T->visit==2){
printf("%5d",T->data);
T=NULL;
}
else{
T->visit++;
Push(S,T);//访问次数不等于2,二次入栈
T=T->Right;
}
}
}
}