uva10625 Undraw the Trees

给一个图,由字符串构成的树,让你前序遍历输出这个树,并不需要构建一棵树,直接递归输出,详看代码。

#include<bits/stdc++.h>
using namespace std;
char s[210][210];
int n;
void dfs(int r,int c)
{
    printf("%c(",s[r][c]);
    if(r+1<n&&s[r+1][c]=='|'&&s[r+2][c]=='-'){
        int i=c;
      while(i-1>=0&&s[r+2][i-1]=='-') i--;
      while(s[r+2][i]=='-'&&s[r+3][i]!='\0'){
        if(s[r+3][i]!=' '){
             dfs(r+3,i);
        }
        i++;
      }
    }
    printf(")");
}
int main()
{
    int T;cin>>T;getchar();
    while(T--){
      n=0;
      for(;;){
        gets(s[n]);
        if(s[n][0]=='#') break;
        else n++;
      }
      printf("(");
      if(n){
        for(int i=0;s[0][i]!='\0';i++){
            if(s[0][i]!=' '){
                dfs(0,i);break;
            }
        }
      }
      printf(")\n");
    }
}


你可能感兴趣的:(uva10625 Undraw the Trees)