#include <bits/stdc++.h>
using namespace std;
string mid, len;
vector<char>fst;
void dfs(int l, int r, vector<char>k ) {
if (l > r)
return ;
vector<char>left, right;
int pos = -1;
char root = k[0];
for (int i = l; i <= r; i++)
if (root == mid[i] ) {
pos = i;
break;
}
for (int i = 0; i < k.size(); i++)
for (int j = l; j < pos; j++)
if (mid[j] == k[i]) {
left.push_back(mid[j]);
break;
}
for (int i = 0; i < k.size(); i++)
for (int j = pos + 1; j <= r; j++)
if (mid[j] == k[i]) {
right.push_back(mid[j]);
break;
}
fst.push_back(root);
dfs(l, pos - 1, left);
dfs(pos + 1, r, right);
return ;
}
int main() {
cin >> mid >> len;
vector<char>leng;
for (int i = 0; i < len.length(); i++)
leng.push_back(len[i]);
dfs(0, mid.length() - 1, leng);
for (int i = 0; i < fst.size(); i++)
cout << fst[i];
}
题解:二叉树遍历(flist)(4月3日)
最新推荐文章于 2024-05-04 13:39:48 发布