int PostOrder(BINARY bi_tree)
{
STACK s_l, s_r; //
BINARY p, pre;
InitStack(s_l);
InitStack(s_r);
p = bi_tree;
pre = NULL;
if(!p)
return 0;
do
{
if( p && pre != p)
{
push(s_l, p);
while(p && p->LChild)
{
p = p->LChild;
push(s_l, p);
}
}
pop(s_l, p);
push(s_r, p);
if(p->RChild && pre != p->RChild)
{
p = p->RChild;
push(s_l,p);
}
else
{
while(StackEmpty(s_r))
{
pop(s_r, p);
visit(p->Date);
}
pre = p;
p = gettop(s_l);
p = p->RChild;
}
}while(StackEmpty(s_l)); // end do
return 1;
}