题目大意 给一棵树 转换成 括号表示的形式
解题思路:深度优先搜索
根的下面第二行为------,从----的头开始下一行会有节点
注意:换行
子树不一定为字母
#include <cstdio>
#include <iostream>
#include<cstring>
using namespace std;
int n;
char buf[210][210];
void dfs(int r,int c)
{
printf("%c(",buf[r][c]);
if(r+1<n&&buf[r+1][c]=='|')
{
int i=c;
while(i-1>=0&&buf[r+2][i-1]=='-')
--i;
while(buf[r+2][i]=='-'&&buf[r+3][i]!='\0')
{
if(!isspace(buf[r+3][i]))
dfs(r+3,i);
++i;
}
}
printf(")");
}
int main()
{
int t;
scanf("%d",&t);
getchar();
while(t--)
{
n=0;
for(;;)
{
fgets(buf[n],210,stdin);
if(buf[n][0]=='#')
break;
else
n++;
}
printf("(");
if(n)
{
for(int i=0;i<strlen(buf[0]);++i)
if(buf[0][i]!=' ')
{
dfs(0,i);
break;
}
}
printf(")\n");
}
return 0;
}