• 코드

정답 코드 : 처음 풀어 본 트리 문제이다. 노드 클래스를 생성하여서 클래스 배열로 접근하였다.

 

import java.io.BufferedReader;
import java.io.InputStreamReader;

public class Main {
	static class NODE {
		String val;
		int parent, right, left;

		public NODE(String val) {
			this.val = val;
			this.parent = this.right = this.left = -1;
		}
	};

	static int N;
	static NODE array[];
	static String s;

	static void preOrder(int node) {
		System.out.print(array[node].val);
		if (array[node].left > -1)
			preOrder(array[node].left);
		if (array[node].right > -1)
			preOrder(array[node].right);
	}

	static void inOrder(int node) {
		if (array[node].left > -1)
			inOrder(array[node].left);
		System.out.print(array[node].val);
		if (array[node].right > -1)
			inOrder(array[node].right);
	}

	static void postOrder(int node) {
		if (array[node].left > -1)
			postOrder(array[node].left);
		if (array[node].right > -1)
			postOrder(array[node].right);
		System.out.print(array[node].val);
	}

	public static void main(String[] args) throws Exception {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		
		array = new NODE[26];
		N = Integer.parseInt(br.readLine());
		
		for (int i = 0; i < 26; i++) {
			array[i] = new NODE(Character.toString((char) (i + 'A')));
		}
		
		for (int i = 0; i < N; i++) {
			char a, b, c;
			s = br.readLine();
			a = s.charAt(0);
			b = s.charAt(2);
			c = s.charAt(4);
			if (b != '.') {
				array[a - 'A'].left = b - 'A';
				array[b - 'A'].parent = a - 'A';
			}
			if (c != '.') {
				array[a - 'A'].right = c - 'A';
				array[c - 'A'].parent = a - 'A';
			}
		}
		preOrder(0);
		System.out.println();
		inOrder(0);
		System.out.println();
		postOrder(0);
		System.out.println();
	}
}

+ Recent posts