Description
输入二叉树的先序遍历序列和中序遍历序列,输出该二叉树的后序遍历序列。
Input
第一行输入二叉树的先序遍历序列;
第二行输入二叉树的中序遍历序列。
Output
输出该二叉树的后序遍历序列。
Sample
Input
ABDCEF
BDAECF
Output
DBEFCA
代码:
#include <stdio.h>
#include <string.h>
#include <malloc.h>
char s[100000],s1[100000],s2[100000];
void digui (int len,char *s1,char *s2,char *s)
{ int i;
if(len<=0)return; //防止死循环;
else
{
for(i=0; i<len; i++)
{
if(s1[0]==s2[i])break;
}
}
digui (i,s1+1,s2,s); //搜索上次搜索的左边
digui (len-i-1,s1+i+1,s2+i+1,s+i); //搜索上次搜索的右边
s[len-1]=s1[0]; //倒序输入一个数组;
}
int main()
{
scanf("%s %s",s1,s2);
int len;len=strlen(s1);
digui(len,s1,s2,s);
printf("%s\n",s);
return 0;
}