中序非递归排序//疑义

中序非递归排序//疑问
C/C++ code

2.中序遍历非递归算法
void InOrderUnrec(Bitree *t)
{
    Stack s;
    StackInit(s);
    Bitree *p=t;

    while (p!=NULL || !StackEmpty(s))
    {
        while (p!=NULL)             //遍历左子树
        {
            push(s,p);
            p=p->lchild;
        }
        
        if (!StackEmpty(s))
        {
            p=pop(s);   //p=pop(s) 是弹出的栈最后元素?
            visite(p->data);        //访问根结点,p->data调用数据成员 怎么 就是头节点了???
            p=p->rchild;            //通过下一次循环实现右子树遍历
        }//endif   
    
    }//endwhile
}




------解决方案--------------------
Q:p=pop(s); //p=pop(s) 是弹出的栈最后元素?

A:对

Q: visite(p->data); //访问根结点,p->data调用数据成员 怎么 就是头节点了???
A:这里弹出的栈顶元素。
你说的头结点?

小结:中序,先看懂递归。然后写写简单的中序,然后转化为 非递归。