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'));
}
}
'백준' 카테고리의 다른 글
백준 2468 안전 영역(Java) (0) | 2023.02.16 |
---|---|
백준 11052 카드 구매하기(Java) (0) | 2023.02.16 |
백준 14888 연산자 끼워넣기(Java) (0) | 2023.02.15 |
백준 10844 쉬운 계단 수(Java) (0) | 2023.02.15 |
백준 11729 하노이 탑 이동 순서(Java) (0) | 2023.02.14 |