洛谷P1827
輸入中序先序序列,輸出後序
#include<bits/stdc++.h>
using namespace std;
string a, b;
void build(int l1, int l2, int l3, int l4) {
if (l1 > l2 || l3 > l4) return;
for (int i = l1; i <= l2; i++) {
if (a[i] == b[l3]) {//分為兩部分
build(l1, i-1, l3+1, l3+i-l1);//輸出左子樹
build(i+1, l2, l3+i-l1+1, l4);//輸出右子樹
cout << a[i];
}
}
}
int main() {
cin >> a >> b;
int l = a.size();
build(0, l-1, 0, l-1);
}
l1-l2為當前中序遍歷序列
l3-l4為當前先序遍歷序列