样例过了,但是只得了20分,求大佬帮助
#include <cstdio>
#include <cstring>
const int MAX = 26 +10;
//数组模拟二叉树
char root[MAX];
char left[MAX];
char right[MAX];
int cnt = 1;
//递归遍历
void print_tree(int n){
if(n) printf("%c",root[n]);
if(left[n]) print_tree(left[n]);
if(right[n]) print_tree(right[n]);
return;
}
int main(){
memset(root,0,sizeof(root));
memset(left,0,sizeof(left));
memset(right,0,sizeof(right));
int n;
scanf("%d",&n);
while(n--){
char a[3];
scanf("%s",a);
root[cnt] = a[0];
if(a[1] != '*') root[cnt+1] = a[1];
if(a[2] != '*') root[cnt+2] = a[2];
if(a[1] != '*') left[cnt] = cnt+1;
if(a[2] != '*') right[cnt] = cnt+2;
for(int i = 1; i <= cnt-1; i++){
if(a[0] == root[i]){
left[cnt] = 0;
right[cnt] = 0;
if(a[1] != '*'){
left[i] = cnt+1;
}
if(a[2] != '*'){
right[i] = cnt+2;
}
break;
}
}
cnt+=3;
}
left[0] = 1;
print_tree(left[0]);
return 0;
}