您的位置:首页 > 编程语言 > C语言/C++

已知先序和中序,计算后序的(c/c++)方法实现

2015-05-14 12:14 197 查看
已知先序和中序,计算后序的(c/c++)方法实现
char pro[30];
char in[30];
int find(char c,char a[],int s,int e)
{
int i;
for(i=s; i<=e; i++)
if(a[i]==c) return i;
}

void pronum(char pre[],int pre_s,int pre_e,char in[],int in_s,int in_e)
{
char c;
int k;
if(in_s>in_e) return ;
if(in_s==in_e)
{
printf("%c",in[in_s]);
return ;
}
c=pre[pre_s];
k=find(c,in,in_s,in_e);
pronum(pre,pre_s+1,pre_s+k-in_s,in,in_s,k-1); /* 递归求解分割的左子树。 */
pronum(pre,pre_s+k-in_s+1,pre_e,in,k+1,in_e); /* 递归求解分割的右子树。 */
printf("%c",c); /* 根节点输出。 */
}
main()
{
while(scanf("%s%s",pro,in)!=EOF)
{
pronum(pro,0,strlen(pro)-1,in,0,strlen(in)-1);
cout<<endl;
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐