얼렁뚱땅 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();
		}
	}

}