50分求助
查看原帖
50分求助
228287
杜中坤楼主2021/6/16 10:37
#include<cstring>
#include<cstdio>
#include<iostream>
using namespace std;
struct ne{
	int node;
	int ls;
	int rs;
	int f;
};
int n;
char a,b,c,d;
ne er[27];
int can[27];
int t;
int fir(ne x)
{
	if(x.node)
	{
		printf("%c",x.node);
		fir(er[x.ls]);
		fir(er[x.rs]);
	}
}
int main()
{
	scanf("%d",&n);
	for(int i=1;i<=26;i++)
	er[i].node=0;
	for(int i=1;i<=n;i++)
	{
		scanf(" %c%c%c",&a,&b,&c);
		can[int(a)-'a'+1]=1;
		er[int(a)-'a'+1].node=int(a);
		if(b!='*') er[int(a)-'a'+1].ls=int(b)-'a'+1,er[int(b)-'a'+1].f=int(a)-'a'+1,can[int(b)-'a'+1]=1;
		else er[int(a)-'a'+1].ls=0;
		if(c!='*') er[int(a)-'a'+1].rs=int(c)-'a'+1,er[int(c)-'a'+1].f=int(a)-'a'+1,can[int(b)-'a'+1]=1;
		else er[int(a)-'a'+1].rs=0;
	}	

	t=1;
	while(er[t].f!=0)
	t=er[t].f;
	fir(er[t]);
	printf("\n");
	return 0;
}

数据

in:

20
cns
nd*
dgf
shj
fq*
qlk
gte
k*i
j*a
h*p
ab*
lr*
em*
p**
mo*
t**
i**
r**
o**
b**

out:

20
cns
nd*
dgf
shj
fq*
qlk
gte
k*i
j*a
h*p
ab*
lr*
em*
p**
mo*
t**
i**
r**
o**
b**

错误输出:

cndgtemofqlrkiabshpjab
2021/6/16 10:37
加载中...