[알고리즘] 1991. 트리 순회
2024. 2. 18. 16:03ㆍAlgorithm/with Java
0. 문제
1991번: 트리 순회
첫째 줄에는 이진 트리의 노드의 개수 N(1 ≤ N ≤ 26)이 주어진다. 둘째 줄부터 N개의 줄에 걸쳐 각 노드와 그의 왼쪽 자식 노드, 오른쪽 자식 노드가 주어진다. 노드의 이름은 A부터 차례대로 알파
www.acmicpc.net
1. 문제 이해
- 트리
- dfs
2. 제출
import java.io.*;
import java.util.StringTokenizer;
// import java.util.Arrays;
public class BOJ1991 {
static int N;
static Node[] tree;
static StringBuffer sb;
private static class Node {
char data;
char left;
char right;
public Node (char data, char left, char right) {
this.data = data;
this.left = left;
this.right = right;
}
}
private static void init() throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
N = Integer.parseInt(st.nextToken());
tree = new Node[26];
sb = new StringBuffer();
char data, left, right;
for (int i = 0; i<N; i++) {
st = new StringTokenizer(br.readLine());
data = st.nextToken().charAt(0);
left = st.nextToken().charAt(0);
right = st.nextToken().charAt(0);
tree[data - 'A'] = new Node(data, left, right);
}
}
private static void solve() {
sb.append(pre('A')).append("\n");
sb.append(in('A')).append("\n");
sb.append(post('A')).append("\n");
}
private static String pre(char node) {
Node cur = tree[node - 'A'];
String ret = "" + cur.data;
if(cur.left != '.'){
ret += pre(cur.left);
}
if(cur.right != '.'){
ret += pre(cur.right);
}
return ret;
}
private static String in(char node) {
Node cur = tree[node - 'A'];
String ret = "";
if(cur.left != '.'){
ret += in(cur.left);
}
ret += cur.data;
if(cur.right != '.'){
ret += in(cur.right);
}
return ret;
}
private static String post(char node) {
Node cur = tree[node - 'A'];
String ret = "";
if(cur.left != '.'){
ret += post(cur.left);
}
if(cur.right != '.'){
ret += post(cur.right);
}
ret += cur.data;
return ret;
}
public static void main(String[] args) throws Exception {
init();
solve();
System.out.println(sb);
}
}
'Algorithm > with Java' 카테고리의 다른 글
[알고리즘] 1861. 정사각형 방 (0) | 2024.02.18 |
---|---|
[알고리즘] 11286. 절댓값 힙 (0) | 2024.02.18 |
[알고리즘] 1713. 후보 추천하기 (0) | 2024.02.18 |
[알고리즘] 2493. 탑 (0) | 2024.02.18 |
[알고리즘] 9229. 한빈이와 Spot Mart (0) | 2024.02.18 |