- Today
- Total
- Algorithm
- Graph
- ์กธ์ ์ํ
- leetcode
- ์์์ ๋ ฌ
- OOP
- ๋ฐ์ดํฐ๋ฒ ์ด์ค
- ์๋ฃ๊ตฌ์กฐ
- BFS
- database
- PS
- ์๋ฐ
- ๋ฐฑ์๋
- ๋ฒจ๋งํฌ๋
- ํ๋ก๊ทธ๋๋จธ์ค
- CS
- java
- ์ธํด
- ๋ฌธ๋ฒ
- MST
- ๊ตฌํ
- array
- pytorch
- spring
- tree
- ์๋ฐ์์ ์
- ๋ค์ต์คํธ๋ผ
- ๋ฐฑ์ค
- ๊ทธ๋ฆฌ๋
- dp
Partially Committed
[๋ฐฑ์ค 1991] ํธ๋ฆฌ ์ํ (JAVA) ๋ณธ๋ฌธ
https://www.acmicpc.net/problem/1991
์ด์ง ํธ๋ฆฌ๋ฅผ ์ ๋ ฅ๋ฐ์ ์ ์ ์ํ(preorder traversal), ์ค์ ์ํ(inorder traversal), ํ์ ์ํ(postorder traversal)ํ ๊ฒฐ๊ณผ๋ฅผ ์ถ๋ ฅํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค.
์๋ฅผ ๋ค์ด ์์ ๊ฐ์ ์ด์ง ํธ๋ฆฌ๊ฐ ์ ๋ ฅ๋๋ฉด,
- ์ ์ ์ํํ ๊ฒฐ๊ณผ : ABDCEFG // (๋ฃจํธ) (์ผ์ชฝ ์์) (์ค๋ฅธ์ชฝ ์์)
- ์ค์ ์ํํ ๊ฒฐ๊ณผ : DBAECFG // (์ผ์ชฝ ์์) (๋ฃจํธ) (์ค๋ฅธ์ชฝ ์์)
- ํ์ ์ํํ ๊ฒฐ๊ณผ : DBEGFCA // (์ผ์ชฝ ์์) (์ค๋ฅธ์ชฝ ์์) (๋ฃจํธ)
๊ฐ ๋๋ค.
์ ๋ ฅ
์ฒซ์งธ ์ค์๋ ์ด์ง ํธ๋ฆฌ์ ๋ ธ๋์ ๊ฐ์ N(1 ≤ N ≤ 26)์ด ์ฃผ์ด์ง๋ค. ๋์งธ ์ค๋ถํฐ N๊ฐ์ ์ค์ ๊ฑธ์ณ ๊ฐ ๋ ธ๋์ ๊ทธ์ ์ผ์ชฝ ์์ ๋ ธ๋, ์ค๋ฅธ์ชฝ ์์ ๋ ธ๋๊ฐ ์ฃผ์ด์ง๋ค. ๋ ธ๋์ ์ด๋ฆ์ A๋ถํฐ ์ฐจ๋ก๋๋ก ์ํ๋ฒณ ๋๋ฌธ์๋ก ๋งค๊ฒจ์ง๋ฉฐ, ํญ์ A๊ฐ ๋ฃจํธ ๋ ธ๋๊ฐ ๋๋ค. ์์ ๋ ธ๋๊ฐ ์๋ ๊ฒฝ์ฐ์๋ .์ผ๋ก ํํํ๋ค.
์ถ๋ ฅ
์ฒซ์งธ ์ค์ ์ ์ ์ํ, ๋์งธ ์ค์ ์ค์ ์ํ, ์ ์งธ ์ค์ ํ์ ์ํํ ๊ฒฐ๊ณผ๋ฅผ ์ถ๋ ฅํ๋ค. ๊ฐ ์ค์ N๊ฐ์ ์ํ๋ฒณ์ ๊ณต๋ฐฑ ์์ด ์ถ๋ ฅํ๋ฉด ๋๋ค.
์์ ์ ๋ ฅ 1
7
A B C
B D .
C E F
E . .
F . G
D . .
G . .
์์ ์ถ๋ ฅ 1
ABDCEFG
DBAECFG
DBEGFCA
ํธ๋ฆฌ์ ์ํ ๋ฐฉ์์๋ Postorder , Inorder, Preorder ์ด ์๋ค.
์ธ ํจ์๋ฅผ ๊ตฌํํด์ฃผ๊ธฐ๋ง ํ๋ฉด ๋๋ค.
Tree ์ ๊ฐ ๋ ธ๋๋ฅผ Node ๋ก ์ง์ ํ๊ณ
graph ํํ๋ก ์๋ฃ๊ตฌ์กฐ๋ฅผ ๋ง๋ค์ด๋ ๋์ง๋ง,
2์ฐจ์ ๋ฐฐ์ด์ ์ ์ฅํ๋ ๋ฐฉ์์ด ๋ ์ฝ๋ค.
tree[i][0] = i ๋ ธ๋์ left
tree[i][1] = i ๋ ธ๋์ right
์์ ๊ฐ์ด 2์ฐจ์ ๋ฐฐ์ด์ ํธ๋ฆฌ๋ฅผ ์ ์ฅํ๊ณ ์ํํด์ฃผ์.
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Main {
static int[][] tree;
public static void main(String[] args) throws IOException {
System.setIn(new FileInputStream("src/input.txt"));
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int n = Integer.parseInt(br.readLine()); // ๋
ธ๋์ ๊ฐ์
tree = new int[26][2];
for (int i = 0; i < n; i++) {
String [] temp = br.readLine().split(" ");
int now_node = temp[0].charAt(0)-'A';
char left = temp[1].charAt(0);
char right = temp[2].charAt(0);
if(left=='.'){
tree[now_node][0] = -1;
} else {
tree[now_node][0] = left-'A';
}
if(right=='.'){
tree[now_node][1] = -1;
} else {
tree[now_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 postorder(int now){
if(now==-1)
return;
postorder(tree[now][0]);
postorder(tree[now][1]);
System.out.print((char)(now+'A'));
}
static void inorder(int now){
if(now==-1)
return;
inorder(tree[now][0]);
System.out.print((char)(now+'A'));
inorder(tree[now][1]);
}
}
'๐ฅ Algorithm || ๋ฌธ์ ํ์ด > PS' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค 1947] ์ ๋ฌผ ์ ๋ฌ (JAVA) (0) | 2023.01.27 |
---|---|
[๋ฐฑ์ค 1256] ์ฌ์ (JAVA) (0) | 2023.01.26 |
[๋ฐฑ์ค 1068] ํธ๋ฆฌ (JAVA) (0) | 2023.01.22 |
[๋ฐฑ์ค 1414] ๋ถ์ฐ์ด์๋๊ธฐ (JAVA) (0) | 2023.01.20 |
[๋ฐฑ์ค 17472] ๋ค๋ฆฌ ๋ง๋ค๊ธฐ2 (JAVA) (0) | 2023.01.19 |