|
这样一道题:
给出一颗二叉树的先序和中序遍历,求后序遍历。
代码有误,望修改
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int alen,blen;
char a[110],b[110];
int k[110];
char ss[110];
int L;
void dfs(int la,int lb,int ra,int rb)
{
if(la>ra) return ;
int ta=k[a[la]]-lb;
dfs(la+1,la+ta,lb,k[a[la]]-1);
int tb=rb-k[a[la]]+1;
dfs(la+ta+1,tb,k[a[la]]+1,rb);
ss[++L]=a[la];
}
int main()
{
scanf("%s",a+1); alen=strlen(a+1);
scanf("%s",b+1); blen=strlen(b+1);
for(int i=1;i<=alen;i++) k[b[i]]=i;
L=0;
dfs(1,alen,1,blen);
for(int i=1;i<=L;i++) printf("%c",ss[i]);
printf("\n");
return 0;
}
|
|