给出一棵二叉树的中序与后序排列。求出它的先序排列
来自oj上一道题
1008 : 求先序排列
时间限制(普通/Java):1000MS/3000MS 内存限制:65536KByte
总提交: 6 测试通过: 5
描述
给出一棵二叉树的中序与后序排列。求出它的先序排列。(约定树结点用不同的大写字母表示,长度<=8)。
输入
两行,分别为给定的一棵二叉树的中序与后序排列.
输出
一行,为所求的此二叉树的前序排列.
样例输入
BADC
BDCA
样例输出
ABCD
**题解
#include<iostream>
#include<bits/stdc++.h>
using namespace std;
string s1,s2;
void before(int hl,int hr,int zl,int zr)
{
if(zl==zr)
return ;
int g;
for(int i=0;i<zr;i++)
{
if(s1[i]==s2[hr-1])
{
g=i;
cout<<s1[g];
break;
}
}
before(hl,hl+g-zl,zl,g);
before(hl+g-zl,hr-1,g+1,zr);
}
int main()
{
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
cin>>s1>>s2;
before(0,s2.length(),0,s1.length());
return 0;
}