数据结构(C语言版)问题?求大神帮忙解答

写出非递归后序遍历二叉树算法... 写出非递归后序遍历二叉树算法 展开
 我来答
参观西湖
2020-11-25 · 古籍有很多,写出来一起欣赏。
参观西湖
采纳数:919 获赞数:2308

向TA提问 私信TA
展开全部
typedef struct ErChaNode{
ErChaNode * pZuo;
ErChaNode * pYou;
char data;
}*PErChaNode,**PPErChaNode,*PStackData;

void PostorderWhileStack(PErChaNode pShugen){
if (pShugen==NULL) return;
PStack se=createStack();
PErChaNode pNode = pShugen;
while (pNode)
{
push(&se,pNode);
if (pNode->pZuo) pNode = pNode->pZuo;
else pNode = pNode->pYou;
}
while (!stackEmpty(se))
{
PErChaNode pNode = top_stack(se);
pop(&se);
printf("%c ",pNode->data);
if (!stackEmpty(se) && pNode == top_stack(se)->pZuo)
{
pNode = top_stack(se)->pYou;
while (pNode)
{
push(&se,pNode);
if (pNode->pZuo)pNode = pNode->pZuo;
else pNode = pNode->pYou;
}
}
}
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
光点科技
2023-08-15 广告
通常情况下,我们会按照结构模型把系统产生的数据分为三种类型:结构化数据、半结构化数据和非结构化数据。结构化数据,即行数据,是存储在数据库里,可以用二维表结构来逻辑表达实现的数据。最常见的就是数字数据和文本数据,它们可以某种标准格式存在于文件... 点击进入详情页
本回答由光点科技提供
小黑哎啊
科技发烧友

2020-11-26 · 智能家居/数码/手机/智能家电产品都懂点
知道大有可为答主
回答量:1642
采纳率:74%
帮助的人:350万
展开全部

#include<stdio.h>

#include<malloc.h>

typedef struct st{

char data;

struct st *r;

struct st *l;

}*link,ll;

char s[20]="ABC##DE##F##G##";//二叉树序列 

int i=0;

void create_tree(link &tree)//先序递归建树 

{

if(s[i]=='#') 

tree=NULL,i++;

else

{

tree=(link)malloc(sizeof(ll)); 

tree->data=s[i],i++;

create_tree(tree->l);

create_tree(tree->r);

}

}

void behind_1(link tree)//递归后序遍历 

{

if(tree)

{

behind_1(tree->l);

behind_1(tree->r);

printf("%c ",tree->data);

}

}

void behind_2(link tree)//非递归后序遍历 

{


     link T;

     link s[20];//人工栈 

int flag[20];//标记结点

    int top=0;

     T=tree;

     while(top!=0||T){

         while(T)

         {

             s[top++]=T;

             flag[top-1]=0;

             T=T->l;

          } 

          while(top!=0&&flag[top-1]==1){

              T=s[--top];

              printf("%c ",T->data);

          }

          if(top!=0){

              flag[top-1]=1;

              T=s[top-1];

              T=T->r;

          }

          else   break;

     }

}

int main()

{

link T=NULL; 

create_tree(T);//建树 

printf("递归后序遍历二叉树\n"); 

behind_1(T);//递归后序遍历 

printf("\n非递归后序遍历二叉树\n"); 

behind_2(T);//非递归后序遍历 

return 0;

}

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式