说明
输出格式
输出文件 flist.out 就一行,表示二叉树的先序序列。
样例
输入数据 1
DBEAC
ABCDE
输出数据 1
ABDEC
【思路】
根据广度优先搜索我们可以知道结点的深度,然后在中序遍历里找到当前结点所匹配的位置,就能找到当前节点的左右孩子,一直遍历下去即可。
【代码】
#include<iostream>
#include<string>
using namespace std;
string a,b;
void createtree(int la,int ra,int c)
{
bool x;
cout<<b[c];
int pos=a.find(b[c]);
for(int i=c+1;i<b.size() ;i++)
{
x=0;
for(int j=la;j<pos ;j++)
{
if(a[j]==b[i])
{
createtree(la,pos-1,i);
x=1;
break;
}
}
if(x) break;
}
for(int i=c+1;i<b.size() ;i++)
{
int pos=a.find(b[c]);
for(int j=pos+1;j<=ra ;j++)
{
x=0;
if(a[j]==b[i])
{
x=1;
createtree(pos+1,ra,i);
break;
}
}
if(x) break;
}
return;
}
int main()
{
cin>>a>>b;
createtree(0 ,b.size() ,0);
return 0;
}