문제 설명

문제 분석

슈도코드

구현
public class 트리순회_1991 {
static int[][] tree;
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int N = Integer.parseInt(scan.nextLine());
tree = new int[26][2]; //0, 1: 왼쪽 자식 노드, 2: 오른쪽 자식 노드
for (int i = 0; i < N; i++) {
String[] temp = scan.nextLine().split(" ");
int node = temp[0].charAt(0) - 'A'; //인덱스로 변환
char left = temp[1].charAt(0);
char right = temp[2].charAt(0);
// 왼쪽 자식 노드: 없으면 -1 저장
if(left == '.'){
tree[node][0] = -1;
} else {
tree[node][0] = left - 'A';
}
// 오른쪽 자식 노드: 없으면 -1 저장
if(right == '.'){
tree[node][1] = -1;
} else {
tree[node][1] = right - 'A';
}
}
preOrder(0);
System.out.println();
inOrder(0);
System.out.println();
postOrder(0);
System.out.println();
}
// 전위 순회
static void preOrder(int now) {
if(now == -1) return;
System.out.print((char) (now + 'A')); // 현재 노드
preOrder(tree[now][0]); // 왼쪽 탐색
preOrder(tree[now][1]); // 오른쪽 탐색
}
// 중위 순회
static void inOrder(int now) {
if(now == -1) return;
inOrder(tree[now][0]); // 왼쪽 탐색
System.out.print((char) (now + 'A')); // 현재 노드
inOrder(tree[now][1]); // 오른쪽 탐색
}
// 후위 순회
static void postOrder(int now) {
if(now == -1) return;
postOrder(tree[now][0]); // 왼쪽 탐색
postOrder(tree[now][1]); // 오른쪽 탐색
System.out.print((char) (now + 'A')); // 현재 노드
}
}