稽东千年香榧园:怎样读二叉树的遍历的次序?

来源:百度文库 编辑:杭州交通信息网 时间:2024/05/02 18:25:35
最好有图解 解释一种就行

二叉树三种遍历算法

二叉树三种遍历算法的源码背诵版一文中代码风格和《严》中不同,我按照教材的风格写了三个函数,大家看看有没有问题。谢!

PreOrderTraverse(BiTree T)
{
InitStatck(S);p=T;
while(p||!StackEmpty(s))
{
if(p){visit(p->data);push(s,p);p=p->lchild;}
else{pop(s,p);p=p->rchild;}
}
}

InOrderTraverse(BiTree T)
{
InitStack(s);p=T;
while(p||!StackEmpty(s))
{
if(p){push(s,p);p=p->lchild;}
else {pop(s,p);visit(p->data);p=p->rchild;}
}
}

typedef strct{
BiTNode *ptr;
int tag;
}StackNode;

PostOrderTraverse(BiTree T)
{
InitStatck(s);p=T;
while(p||!StackEmpty(s))
{
if(p){x={p,0};push(s,x);p=p->lchild;}
else{
pop(s,x);
if(x.tag==0){x.tag=1;push(s,x);p=x.ptr->rchild;}
else if(x.tag==1){visit(x.ptr->data);}
}
}
}