这道题不是二叉树形式的,没法建二叉树,不过可以通过建二叉树的方法来做,不过这道题刚开始就考虑错了,以为只有字母是节点,其实还包括数字等字符,结果交了好几次wa……可惜啊
#include <iostream>
#include <cstring>
#include <cstdio>
using namespace std;
void dfs(char s[210][210],int row,int clow,int len)
{
int k,l;
for( k=clow; s[row][k]=='-'; k++)
if(s[row+1][k]!=' '&&s[row+1][k]&&s[row+1][k]!='#')
{
printf("%c(",s[row+1][k]);
if(row+2<len&&s[row+2][k]=='|')
{
for(l=k; l&&s[row+3][l-1]=='-'; l--);
dfs(s,row+3,l,len);
}
printf(")");
}
}
int main()
{
//freopen("a.txt","r",stdin);
int n,i,j;
scanf("%d",&n);
getchar();
char str[210][210];
while(n--)
{
i=1;
memset(str,0,sizeof(str));
while(gets(str[i]))
{
if(str[i][0]=='#')break;
i++;
}
printf("(");
for(j=0; j<strlen(str[1]); j++)str[0][j]='-';
dfs(str,0,0,i);
printf(")\n");
}
return 0;
}
10562 - Undraw the Trees
最新推荐文章于 2022-02-23 15:02:25 发布