题解 :
- 前和中得到后,找到中序中当前根节点的位置,分别dfs左右子树,然后输出当前根节点
#include <iostream>
using namespace std;
string pre, in;
void dfs(int l1, int r1, int l2, int r2) {
if (l1 > r1) return ;
int i = l2;
while (pre[l1] != in[i]) ++ i;
dfs(l1 + 1, l1 + 1 + i - l2 - 1, l2, i - 1);
dfs(l1 + 1 + i - l2 - 1 + 1, r1, i + 1, r2);
cout << pre[l1];
}
int main() {
while (cin >> pre >> in) {
dfs(0, pre.size() - 1, 0, in.size() - 1);
cout << endl;
}
}