知识点:二叉树
二叉树刚入门的时候主要就是这个知识点,二叉树的递归遍历,可以完成很多问题,现在对这个理解加深了一点,可以不用建树了,直接递归的过程中间输出答案就行了,
#include <bits/stdc++.h>
using namespace std;
string pre, in;
map<char, int> mp;
void solve(int inl, int inr, int prel, int prer) {
if (inl > inr) return;
int mid = mp[pre[prel]];
int numleft = mid - inl;
solve(inl, mid - 1, prel + 1, prel + numleft);
solve(mid + 1, inr, prel + numleft + 1, prer);
cout << pre[prel];
}
int main() {
while (cin >> pre >> in) {
for (int i = 0; i < (int) in.size(); i++) {
mp[in[i]] = i;
}
int n = (int) in.size();
solve(0, n - 1, 0, n - 1);
cout << endl;
}
return 0;
}