蒟蒻求解,20分
查看原帖
蒟蒻求解,20分
918152
yizhidashayu楼主2023/7/27 20:10

样例过了,但是只得了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;
}
2023/7/27 20:10
加载中...