순회 자체는 간단하다
현재 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');
}
}
'Hard deck > reindexing d1' 카테고리의 다른 글
068 : 리프 노드의 갯수 구하기 (0) | 2023.06.16 |
---|---|
067 : 트리의 부모 찾기 (0) | 2023.06.15 |
074 : 최소 공통 조상 구하기 1 (0) | 2023.06.15 |
056 : 최단 경로 구하기 (0) | 2023.06.15 |
059 : 타임머신으로 빨리 가기 (0) | 2023.06.14 |