萌新求教
#include<bits/stdc++.h>
using namespace std;
const int maxl=60;
struct node{
int ll,rr;
}a[maxl];
int n,root;
char ss[5];
int v[maxl];
void dfs(int k){
printf("%c",k+'a'-1);
if(a[k].ll){
dfs(a[k].ll);
}
if(a[k].rr){
dfs(a[k].rr);
}
}
int main (){
scanf("%d",&n);
for(int i=1;i<=n;i++){
scanf("%s",ss);
v[ss[0]-'a'+1]++;
v[ss[1]-'a'+1]++;
v[ss[2]-'a'+1]++;
if(ss[1]!='*'){
a[ss[0]-'a'+1].ll=ss[1]-'a'+1;
v[ss[1]-'a'+1]++;
}
if(ss[2]!='*'){
a[ss[0]-'a'+1].rr=ss[2]-'a'+1;
v[ss[1]-'a'+1]++;
}
for(root=1;;root++){
if(v[root]==1){
break;
}
}
dfs(root);
printf("\n");
}
return 0;
}