Hard deck/reindexing d1
070 : 트리 순회하기
서버관리자 페페
2023. 6. 15. 13:42
순회 자체는 간단하다
현재 node Print / L recursive / R recursive
순서만 정해준 후 프로그램에게 '지금 - 다음' Unit의 반복으로 while line을 돌도록 시키는 것
*내가 하는 게 아님
문제는 인자의 공급과 어떤 TP를 사용할 것인가인데,
binary tree 순회에서는 node 정보로 양 자식노드에 접근가능한 int[26][2] 사용
숫자 + 'A' = char
String > char 도 가능
괄호로 묶어줘야 함
(char) (node + 'A')
import java.util.ArrayList;
import java.util.Scanner;
public class Main {
static int[][] TP;
public static void main(String[] args) {
// ISC
Scanner sc = new Scanner(System.in);
int V = sc.nextInt();
// D2F
TP = new int[26][2];
for (int i = 1; i <= V; i++) {
String[] set = sc.nextLine().split(" ");
int node = set[0].charAt(0) - 'A';
char L = set[0].charAt(0);
char R = set[2].charAt(0);
if (L == '.')
TP[node][0] = -1;
else
TP[node][0] = L - 'A';
if (R == '.')
TP[node][1] = -1;
else
TP[node][1] = R - 'A';
}
// OP + OEC patch
preOrder(0);
System.out.println();
inOrder(0);
System.out.println();
postOrder(0);
}
static void preOrder(int node) {
if (node == -1)
return;
System.out.print((char) node + 'A');
preOrder(TP[node][0]);
preOrder(TP[node][1]);
}
static void inOrder(int node) {
if (node == -1)
return;
inOrder(TP[node][0]);
System.out.print((char) node + 'A');
inOrder(TP[node][1]);
}
static void postOrder(int node) {
if (node == -1)
return;
postOrder(TP[node][0]);
postOrder(TP[node][1]);
System.out.print((char) node + 'A');
}
}