Description
已知某二叉树的先序序列和中序序列,编程计算并输出该二叉树的后序序列。
Input
有多组数据,每组分为两行输入,第一行表示指定二叉树的先序序列,第二行表示该二叉树的中序序列,序列元素均为大写英文字符,表示二叉树的结点。
Output
对于每组数组,在一行上输出该二叉树的后序序列。
Sample Input
ABDGCEFH
DGBAECHF
Sample Output
GDBEHFCA
#include<bits/stdc++.h>
using namespace std;
string nsj(string qm,string zj);
int main()
{
string qm,zj;
while(cin>>qm>>zj)
{
cout<<nsj(qm,zj)<<endl;
}
return 0;
}
string nsj(string qm,string zj)
{
string h,qm1,qm2,zj1,zj2;
char g;
int a,gwz;
a=zj.size();
g=qm[0];
gwz=zj.find(g);
if(a>1)
{
if(gwz>=1)
{
zj1=zj.substr(0,gwz);
qm1=qm.substr(1,gwz);
h+=nsj(qm1,zj1);
}
if(gwz<a-1)
{
zj2=zj.substr(gwz+1,a-gwz-1);
qm2=qm.substr(gwz+1,a-gwz-1);
h+=nsj(qm2,zj2);
}
}
h+=g;
return h;
}