洛谷 P1030 [NOIP 2001 普及组] 求先序排列
本题主要考察的是根据后序中序建树,但是实际上不需要真的建树。
AcCode:
#include<iostream>
using namespace std;
string m, b;
void print(int ml, int mr, int bl, int br){
if(ml >= mr || bl >= br){
return ;
}
char rt = b[br - 1];
cout << rt;
int pos = 0;
while(m[pos] != rt && pos < mr) pos++;
print(ml, pos, bl, bl + pos - ml);
print(pos + 1, mr, bl + pos - ml, br - 1);
}
int main(){
cin >> m >> b;
int cnt = m.length();
print(0, cnt, 0, cnt);
return 0;
}