读书人

中序非递归排序//疑义

发布时间: 2012-09-11 10:49:03 作者: rapoo

中序非递归排序//疑问

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:这里弹出的栈顶元素。
你说的头结点?

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

读书人网 >C++

热点推荐