# [NOIP2001 普及组] 求先序排列
## 题目描述
给出一棵二叉树的中序与后序排列。求出它的先序排列。(约定树结点用不同的大写字母表示,且二叉树的节点个数 $ \le 8$)。
## 输入格式
共两行,均为大写字母组成的字符串,表示一棵二叉树的中序与后序排列。
## 输出格式
共一行一个字符串,表示一棵二叉树的先序。
## 样例 #1
### 样例输入 #1
```
BADC
BDCA
```
### 样例输出 #1
```
ABCD
```
#include<cstdio>//程序开始!
#include<cstring>
using namespace std;
char a[100]/*存中序*/,b[100]/*存后序*/;
void tree(int d,int e)//递归函数
{
int i,f,c,j;
c=0;//c归零(为什么你一会儿就知道了)
if(d>e) return;//查找范围为d-e(一颗树),范围中没东西了,结束
for(j=strlen(a)-1;j>=0;j--)//倒着找,以便找出最后一个
{
for(i=d;i<=e;i++)//!!!整棵树都要找!!!
{
if(a[i]==b[j])//找到了,记录,结束查找
{
c=i;
break;
}
}
if(c) break;//c有变动,退出循环(没变动说明没找到或者最后才找到)
}
printf("%c",a[c]);//输出根
tree(d,c-1);//左子树先
tree(c+1,e);
}
int main()
{
int i,c;
scanf("%s%*c%s",a,b);//输入(%*c是为了不记录换行)
tree(0,strlen(a)-1);//调用函数
}