非玩梗
RUN https://www.luogu.com.cn/record/40358312
以下是我的代码:
#include<bits/stdc++.h>
#define N 30
int n,rt;
int ls[N],rs[N];
bool vis[N],son[N];
namespace WalkerV {
void Read() {
scanf("%d",&n);
for(int i=1;i<=n;i++) {
getchar();
int o,l,r;
char c,x,y;
c=getchar(),x=getchar(),y=getchar();
o=c-'a'+1;
//printf("%d",o);
vis[o]=true;
if(x!='*') {
l=x-'a'+1;
//printf("%d",l);
ls[o]=l;
son[l]=true;
}
if(y!='*') {
r=y-'a'+1;
//printf("%d",r);
rs[o]=r;
son[r]=true;
}
//printf("\n");
}
return;
}
void DFS(int o) {
printf("%c",o+'a'-1);
if(ls[o]) {
DFS(ls[o]);
}
if(rs[o]) {
DFS(rs[o]);
}
return;
}
void Solve() {
for(int i=1;i<=26;i++) {
if(vis[i]&&!son[i]) {
rt=i;
break;
}
}
//printf("rt:%d\n",rt);
DFS(rt);
return;
}
}
int main()
{
WalkerV::Read();
WalkerV::Solve();
return 0;
}
第一个数据点我下下来了,本机是对的,请大家帮帮忙!谢谢!