具体代码
#include <iostream>
#include <string>
using namespace std;
const int maxn=200+5;
string tree[maxn];
void dfs(int row,int col)
{
cout<<tree[row][col];
cout<<"(";
if(col<tree[row+1].size()&&tree[row+1][col]=='|')
{
int begin=col,end=col;
while(tree[row+2][begin]=='-') --begin;
while(tree[row+2][end]=='-') ++end;
for(int i=begin+1;i<end;++i)
{
if(i<tree[row+3].size()&&tree[row+3][i]!=' '&&tree[row+3][i]!='#')
dfs(row+3,i);
}
}
cout<<")";
}
int main()
{
freopen("input.txt","r",stdin);
int kn;
cin>>kn;
string __dump;
getline(cin,__dump);
for(int kase=0;kase<kn;++kase)
{
for(int i=0;i<maxn;++i) tree[i].clear();
int i=0;
for(getline(cin,tree[i]);tree[i]!="#";getline(cin,tree[++i]));
//tree[i].assign(maxn,'#');
if(tree[0]=="#")
{
cout<<"()"<<endl;
continue;
}
cout<<"(";
for(int i=0;i<tree[0].size();++i)
if(tree[0][i]!=' ')
dfs(0,i);
cout<<")";
cout<<endl;
}
return 0;
}