大家好,我是 DongGu ,是一名软件工程专业大二的学生,写博客一方面是为了记录自己的学习过程,把自己犯的错误进行分享。但由于水平有限,博客中难免会有一些错误出现,有纰漏之处恳请各位大佬不吝赐教!有任何问题可以评论 或者 ___>
QQ联系(1521839703)
个人博客网站也搭好啦: dongguxy.top
/*
DBEAC
ABCDE
输出: ABDEC
*/
#include<iostream>
#include <map>
using namespace std;
struct node {
node* l, * r;
char data;
};
node* root;
string s, s1;
map<char, int> mp;
node* insert(int i, node *&now) {
if (now == NULL) {
now = new node();
now->l = now->r = NULL;
now->data = s1[i];
return now;
}
// 因为是层序, 和前序中序的方式不一样, 就用坐标前后来决定位置
if (mp[now->data] > mp[s1[i]]) insert(i, now->l);
else insert(i, now->r);
}
void dfs(node* now) {
if (now) {
cout << now->data;
dfs(now->l);
dfs(now->r);
delete now;
}
}
int main() {
cin >> s >> s1;
for (int i = 0; i < s.size(); i++) {
mp[s[i]] = i; // 中序的节点的坐标
}
for (int i = 0; i < s.size(); i++) {
insert(i, root);
}
dfs(root);
return 0;
}