分析:
这个题好坑,我一眼一看,以为层次遍历,然后我写完了后发现错了,我一度怀疑这是个啥,然后我下载数据一看,好家伙,这是乱输进来的(除了第一个肯定是头之外)
现在开始分析:输入一个字母,然后输入它的左右节点,‘*’为空节点,然后输出这棵树的先序遍历。
n是小于26的,所以我们可以用一个大数组来接收,用数组来模拟树。
先记录头是哪个字母,然后通过这个字母来找到其它字母就可以了。
#include<stdio.h>
struct tree
{
char data;
char lc;
char rc;
}aa[1000];
void pr(char now)
{
if(now=='*') return ;
printf("%c",aa[now].data);
pr(aa[now].lc);
pr(aa[now].rc);
}
main()
{
int n;
scanf("%d",&n);
char head;
for(int i=0;i<n;i++)
{
char ch1,ch2,ch3;
scanf(" %c%c%c",&ch1,&ch2,&ch3);
if(i==0) head=ch1;
aa[ch1].data=ch1;
aa[ch1].lc=ch2;
aa[ch1].rc=ch3;
}
pr(head);
}