永发信息网

求高手编写二叉树的非递归先序遍历和后序遍历的代码,要求和下面给出的中序遍历类似的做法,程序如下:

答案:1  悬赏:20  手机版
解决时间 2021-02-02 21:00
  • 提问者网友:送舟行
  • 2021-02-02 06:07
求高手编写二叉树的非递归先序遍历和后序遍历的代码,要求和下面给出的中序遍历类似的做法,程序如下:
最佳答案
  • 五星知识达人网友:骨子里都是戏
  • 2021-02-02 07:25
Status PreOrderTraverse(BiTree T,Status (* Visit)(TElemType e))
{//先序遍历二叉树T的递归算法
if(T){
if(Visit(T->data))
if(PreOrderTraverse(T->lchild,Visit))
if(PreOrderTraverse(T->rchild,Visit))
return OK;
return ERROR;
}else return OK;
}

void PostOrderTraverse(BiTree bt)
{//后序遍历二叉树的递归算法
if(bt){
PostOrderTraverse(bt->lchild);
PostOrderTraverse(bt->rchild);
printf("%c",bt->data);
}
} 追问我想要的是非递归算法,请指教追答void PreOrder_Nonrecursive(Bitree T)//先序遍历二叉树的非递归算法
{
InitStack(S);
Push(S,T); //根指针进栈
while(!StackEmpty(S))
{
while(Gettop(S,p)&&p)
{
visit(p->data);
push(S,p->lchild);
} //向左走到尽头
pop(S,p);
if(!StackEmpty(S))
{
pop(S,p);
push(S,p->rchild); //向右一步
}
}//while
}//PreOrder_Nonrecursive
后序的还没时间写,不过大体差不多,自己体会一下应该能写出来
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯