getchar()版本
#include<bits/stdc++.h>
using namespace std;
struct node
{
char now;char l;char r;
}a[100];
int n;
char root;
void dfs(char x)
{
if(x=='')return;
cout<<x;
for(int i=1;i<=n;i++)
{
if(a[i].now==x)
{
dfs(a[i].l);
dfs(a[i].r);
break;
}
}
}
bool f[100005]={0};
int main()
{
cin>>n;
for(int i=1;i<=n;i++)
{
getchar();
a[i].now=getchar();
a[i].l=getchar();
a[i].r=getchar();
f[(int)(a[i].l)]=1;
f[(int)(a[i].r)]=1;
}
for(int i=1;i<=n;i++)
{
if(!f[(int)(a[i].now)])root=a[i].now;
}
if(root!='')
dfs(root);
return 0;
}
string版本
#include<bits/stdc++.h>
using namespace std;
struct node
{
char now;char l;char r;
}a[100];
int n;
char root;
void dfs(char x)
{
if(x=='')return;
cout<<x;
for(int i=1;i<=n;i++)
{
if(a[i].now==x)
{
dfs(a[i].l);
dfs(a[i].r);
break;
}
}
}
bool f[100005]={0};
int main()
{
cin>>n;
string m;
for(int i=1;i<=n;i++)
{
cin>>m;
a[i].now=m[0];
a[i].l=m[1];
a[i].r=m[2];
f[(int)(a[i].l)]=1;
f[(int)(a[i].r)]=1;
}
for(int i=1;i<=n;i++)
{
if(!f[(int)(a[i].now)])root=a[i].now;
}
if(root!='')
dfs(root);
return 0;
}