얼렁뚱땅 JAVA 문제풀이
[JAVA] 얼렁뚱땅 중위순회 풀이
MOSTAR
2023. 3. 2. 15:13
완전 지금 알고리즘 머리 텅텅이라 원칙대로 푼 거 같지는 않지만
풀었다는 것에 너무 신나서 올리는 글
import java.util.*;
import java.io.*;
public class 중위순회 {
static HashMap <Integer, String> content = new HashMap<Integer, String>();
static HashMap <Integer, Integer> left = new HashMap<Integer, Integer>();
static HashMap <Integer, Integer> right = new HashMap<Integer, Integer>();
public static void dfs(int num,int sign) {
if (sign!=0) {
System.out.print("#"+sign+" ");
}
if (left.get(num) != -1) {
dfs(left.get(num),0);
System.out.print(content.get(num));
if(right.get(num) != -1) {
dfs(right.get(num),0);
}
} else if(left.get(num) == -1) {
System.out.print(content.get(num));
return;
}
}
public static void main(String[] args) throws IOException{
// TODO Auto-generated method stub
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
for(int t=1;t<=10;t++) {
int n = Integer.parseInt(br.readLine());
for(int i=0;i<n;i++) {
String [] str = br.readLine().split(" ");
content.put(Integer.parseInt(str[0]), str[1]);
if(str.length>=3) {
left.put(Integer.parseInt(str[0]),Integer.parseInt(str[2]));
} else {
left.put(Integer.parseInt(str[0]),-1);
}
if(str.length>=4) {
right.put(Integer.parseInt(str[0]),Integer.parseInt(str[3]));
} else {
right.put(Integer.parseInt(str[0]),-1);
}
}
dfs(1,t);
System.out.println();
}
}
}