题目大意:
给你一颗二叉树的前序和中序遍历,要你求出后续遍历
解题思路;
dfs就行了,前序遍历的结果依次作为根,找中序遍历中的位置,左边的是左子树,右边的是右子树。。。。
#include<stdio.h>
#include<string.h>
#define N 30
using namespace std;
char pre[N],mid[N],n;
void dfs(int st,int ed)
{
if(st>ed)
return ;
n++;
int k;
for(k=st;k<=ed;k++)
{
if(pre[n]==mid[k])
break;
}
dfs(st,k-1);
dfs(k+1,ed);
printf("%c",mid[k]);
}
int main()
{
int j,len;
while(scanf("%s%s",pre,mid)!=EOF)
{
len=strlen(pre);
n=-1;
dfs(0,len-1);
puts("");
}
}