我也不知道为什么会卡在这种橙题上(哭
根节点我也判了,提交RE后也把数组开到100了,为什么还是RE啊?
代码如下:
#include<bits/stdc++.h>
#define N 100
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;
}
求助各位大佬了!