根据前序遍历和中序遍历写出后序遍历
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
char in_order[30],pre_order[30];
int num[30],co[30];
int cmp(int a,int b)
{
return (num[a]<num[b]);
}
int main()
{
//freopen("data.txt","r",stdin);
while(scanf("%s%s",pre_order,in_order)!=EOF)
{
int len=strlen(in_order);
memset(num,len,sizeof(num));
for(int i=0;i<len;i++)
{
int j;
for(j=0;j<len;j++)
if(in_order[j]==pre_order[i])
break;
int tot=0;
for(int k=len-1;k>=0;k--)
{
if(k==j) continue;
if(k>j&&num[k]==num[j])
{
tot++;
num[k]--;
}
if(k<j&&num[k]==num[j])
num[k]=num[k]-tot-1;
}
co[i]=i;
}
sort(co,co+len,cmp);
for(int i=0;i<len;i++)
printf("%c",in_order[co[i]]);
printf("\n");
}
return 0;
}