백준
백준 1991 트리 순회(Java)
Park DJ
2023. 2. 16. 01:59
https://www.acmicpc.net/problem/1991
1991번: 트리 순회
첫째 줄에는 이진 트리의 노드의 개수 N(1 ≤ N ≤ 26)이 주어진다. 둘째 줄부터 N개의 줄에 걸쳐 각 노드와 그의 왼쪽 자식 노드, 오른쪽 자식 노드가 주어진다. 노드의 이름은 A부터 차례대로 알파
www.acmicpc.net
Java 코드
import java.util.Scanner;
public class Main {
static int n;
static int[][] arr;
static StringBuilder sb = new StringBuilder();
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
n = sc.nextInt();
arr = new int[n][2];
for(int i = 0; i < n; i++) {
char c = sc.next().charAt(0);
char l = sc.next().charAt(0);
char r = sc.next().charAt(0);
if(l == '.') arr[c - 'A'][0] = -1;
else arr[c -'A'][0] = l - 'A';
if(r == '.') arr[c - 'A'][1] = -1;
else arr[c -'A'][1] = r - 'A';
}
pre(0);
sb.append("\n");
inor(0);
sb.append("\n");
post(0);
sb.append("\n");
System.out.println(sb);
}
public static void pre(int num) {
if(num == -1) return;
sb.append((char)(num + 'A'));
pre(arr[num][0]);
pre(arr[num][1]);
}
public static void inor(int num) {
if(num == -1) return;
inor(arr[num][0]);
sb.append((char)(num + 'A'));
inor(arr[num][1]);
}
public static void post(int num) {
if(num == -1) return;
post(arr[num][0]);
post(arr[num][1]);
sb.append((char)(num + 'A'));
}
}