思路:先将图保存在二维数组,然后对图进行DFS。先找到根节点,然后找根节点的子节点,对子节点DFS。
import java.util.Arrays;
import java.util.Scanner;
public class Main {
static int maxn = 200;
static char[][] G = new char[maxn+5][maxn+5];
static int cnt = 0;
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int t = scan.nextInt();
scan.nextLine();
while(t--!=0){
for(int i=0;i<maxn;i++){
Arrays.fill(G[i], ' ');
}
cnt = 0;
while(true){
String str = scan.nextLine();
if("#".equals(str))break;
for(int i=0;i<str.length();i++){
G[cnt][i] = str.charAt(i);
}
cnt++;
}
int c = -1;
for(int i=0;i<maxn;i++){
if(G[0][i]!=' '){
c = i;
break;
}
}
System.out.print("(");
if(c!=-1){
dfs(0,c);
}
System.out.print(")\n");
}
}
public static void dfs(int r,int c){
System.out.printf("%c(",G[r][c]);
if(r+1<cnt&&G[r+1][c]=='|'){
int i = c;
while(i-1>=0&&G[r+2][i-1]=='-')i--;
while(G[r+2][i]=='-'){
if(G[r+3][i]!=' ')dfs(r+3,i);
i++;
}
}
System.out.printf(")");
}
}