题目大意:给出二叉树的前序和中序遍历,输出后序遍历。
递归处理,每次找到当前的根结点,然后递归左子树和右子树。
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
char a[30];
char b[30];
int c[370];
void dfs(int i,int j,int u);
int main(void)
{
int i,lo;
while(scanf("%s%s",a+1,b+1)==2)
{
lo=strlen(a+1);
for(i=1;i<=lo;i++)
{
c[b[i]]=i;
}
dfs(1,1,lo);
printf("\n");
}
return 0;
}
void dfs(int i,int j,int u)
{
int v,uu,vv;
if(u==1)
{
printf("%c",a[i]);
}
else
{
v=c[a[i]];
uu=v-j;
vv=u-uu-1;
if(uu>0)
{
dfs(i+1,j,uu);
}
if(vv>0)
{
dfs(i+uu+1,v+1,vv);
}
printf("%c",a[i]);
}
}