백준 1991번 트리 순회하기

veloger·2023년 1월 19일
0

package test;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.ArrayDeque;
import java.util.ArrayList;
import java.util.Queue;
import java.util.StringTokenizer;

public class BaekJoonQ1991_P408_Q70 {
	static ArrayList<Integer> tree[];
	static char []circuit;
	static BufferedWriter bw;

	
	public static void main(String[] args) throws IOException {
		// TODO Auto-generated method stub
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		bw =new BufferedWriter(new OutputStreamWriter(System.out));
		int nodes=Integer.parseInt(br.readLine());
		tree = new ArrayList[nodes+1];
		
		for(int i=1; i<nodes+1;i++) {
			tree[i] = new ArrayList<>();
		}
		
		for(int i=0;i<nodes;i++) {
			StringTokenizer st =new StringTokenizer(br.readLine());
			int parent =((st.nextToken()).charAt(0)) - 64;
			int left = ((st.nextToken()).charAt(0)) - 64;
			int right = ((st.nextToken()).charAt(0)) -64;

				 tree[parent].add(left);

				 tree[parent].add(right);


		}
		
		pre(1);
		bw.write("\n");
		in(1);
		bw.write("\n");
		post(1);
		bw.flush();
		
	}
	private static void pre(int node) throws IOException {
		if (node == -18) return;
		
		int left = tree[node].get(0);
		int right = tree[node].get(1);
		
		bw.write((char) (node +64));
		pre(left);
		pre(right);
	}
	private static void in(int node) throws IOException {
		if (node == -18) return;
		
		int left = tree[node].get(0);
		int right = tree[node].get(1);
	
		in(left);
		bw.write((char) (node +64));
		in(right);
	}
	private static void post(int node) throws IOException {
		if (node == -18) return;
		
		int left = tree[node].get(0);
		int right = tree[node].get(1);
		
		post(left);
		post(right);
		bw.write((char) (node +64));
	}
}

0개의 댓글