题目链接:https://www.luogu.org/problem/P1305
#include<bits/stdc++.h>
using namespace std;
struct node{
int lch=-1;
int rch=-1;
};
bool vis[29],isnotroot[29];
char s[5];
node tree[29];
void build(int p,int l,int r){
vis[p]=true;
if(l>=0){
tree[p].lch=l;
vis[l]=true;
isnotroot[l]=true;
}
if(r>=0){
tree[p].rch=r;
vis[r]=true;
isnotroot[r]=true;
}
}
void pre_OrderTraversal(int r){
if(r<0){
return ;
}
printf("%c",char(r+'a'));
pre_OrderTraversal(tree[r].lch);
pre_OrderTraversal(tree[r].rch);
}
int main(){
int n;
while(~scanf("%d",&n)){
for(int i=0;i<n;i++){
scanf("%s",s);
build(s[0]-'a',s[1]-'a',s[2]-'a');
}
for(int i=0;i<26;i++){
if(vis[i]&&!isnotroot[i]){
pre_OrderTraversal(i);
break;
}
}
printf("\n");
}
return 0;
}