摘要:下面是希赛软考学院为大家提供的软考程序员教程重点提炼之后序遍历非递归算法,希望能帮助学友们。
下面是希赛软考网为大家提供的软考程序员教程重点提炼之后序遍历非递归算法,希望能帮助学友们。
后序遍历非递归算法
#define maxsize 100
typedef enum{L,R}tagtype;
typedef struct
{
Bitree ptr;
tagtype tag;
}stacknode;
typedef struct
{
stacknode Elem[maxsize];
int top;
}SqStack;
//后序遍历
void PostOrderUnrec(Bitree t)
{
SqStack s;
stacknode x;
StackInit(s);
p=t;
do
{
while(p!=null)//遍历左子树
{
x.ptr=p;
x.tag=L;//标记为左子树
push(s,x);
p=p->lchild;
}
while(!StackEmpty(s)&&s.Elem[s.top].tag==R)
{
x=pop(s);
p=x.ptr;
visite(p->data);//tag为R,表示右子树访问完毕,故访问根结点
}
if(!StackEmpty(s))
{
s.Elem[s.top].tag=R;//遍历右子树
p=s.Elem[s.top].ptr->rchild;
}
}while(!StackEmpty(s));
}//PostOrderUnrec
希赛软考网,拥有十四年软考培训经验,希赛网一直坚持自主研发,将丰富的软考培训经验有效融入教程研发过程,自成体系的软考在线题库(软考历年真题)、软考培训教材和软考视频教程,多样的培训方式包括在线辅导、面授、和,使考生的学习更具系统性,辅导更具针对性。采用全程督学机制,,软考平均通过率在全国。
软考备考资料免费领取
去领取