01-24 13:36
Recent Posts
Recent Comments
Tags
- ์คํฝ์ค๋น
- API MarketPlace ๊ธ๋ก๋ฒ ์ํฌํฐ์ฆ
- ์กํ๊ณ
- ํ๋ก๋ณด๋ ธ
- SQL
- RaspberryPi
- TSQL
- DB
- Spring
- ICT๋ฉํ ๋ง
- DATABASE
- ์๋ฐ
- ์๋์ด๋ ธ
- API๋ง์ผํ๋ ์ด์ค
- ๋ฐ์ดํฐ๋ฒ ์ด์ค
- Java
- ์จ์ผ๋ํ
- appetizer
- JOBํ๊ณ
- ICT
- ์คํฝ๋ ํ
- ํ์ด์ฌ
- Naver Cloud
- ํ์ด์๊ณต๋ชจ์
- linux
- ์ด๋ธ์
- python
- mysql
- ict๊ณต๋ชจ์
- ํ์ด์
- Today
- Total
miinsun
[BAEKJOON] ๋ฐฑ์ค ๊ทธ๋ํ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
โ
๐ป Main.java
- ํธ๋ฆฌ์ ๊ธฐ์ด๋ฅผ ๋ค๋ฃจ๋ ๋ฌธ์ !
- ํธ๋ฆฌ ๋ฌธ์ ๋ฅผ ๋๋ฌด ์ค๋๋ง์ ํ์ด์ ์กฐ๊ธ ํค๋ฉจ์ง๋ง, ๋ค์ ํธ๋ฆฌ๋ฅผ ์ตํ ์ ์๋ ์ข์ ๋ฌธ์ ์๋ค~
/* ๋ฐฑ์ค ๊ทธ๋ํ - 1991 :: ํธ๋ฆฌ ์ํ */
import java.util.*;
import java.io.*;
// ๋
ธ๋
class Node {
public char data;
Node lt, rt;
Node (char data){
this.data = data;
}
}
class Tree{
Node root;
// ํธ๋ฆฌ ์
๋ ฅ
void add(char data, char left, char right) {
// ๋ฃจํธ๊ฐ ๋น์ด์์ผ๋ฉด ๋ฐ์ดํฐ ์
๋ ฅ
if(root == null) {
if(data != '.')
root = new Node(data);
if(left != '.')
root.lt = new Node(left);
if(right != '.')
root.rt = new Node(right);
}
else // ๋ฃจํธ ์ธ์๋ ์๊ธฐ ์๋ฆฌ๋ฅผ ์ฐพ์์ค
search(root, data, left, right);
}
// ๊ฒ์
void search(Node root, char data, char left, char right) {
// ๋
ธ๋๊ฐ ๋น์ด์์ผ๋ฉด ์ข
๋ฃ
if(root == null) return;
else if(root.data == data) { // ์ฐพ๊ณ ์๋ ๋
ธ๋๋ฅผ ์ฐพ์ผ๋ฉด ์ ๋ณด ์
๋ ฅ
if(left != '.')
root.lt = new Node(left);
if(right != '.')
root.rt = new Node(right);
}
else { // ์ผ์ชฝ ํฌ์ธํฐ, ์ค๋ฅธ์ชฝ ํฌ์ธํฐ๋ก ๋
ธ๋ ์ฐพ๊ธฐ
search(root.lt, data, left, right);
search(root.rt, data, left, right);
}
}
// ์ ์์ํ
void preOrder(Node root) {
//root -> left -> right
System.out.print(root.data);
if(root.lt != null) preOrder(root.lt);
if(root.rt != null) preOrder(root.rt);
}
// ์ค์์ํ
void inOrder(Node root) {
// left -> root -> right
if(root.lt != null) inOrder(root.lt);
System.out.print(root.data);
if(root.rt != null) inOrder(root.rt);
}
// ํ์์ํ
void postOrder(Node root) {
// left -> right -> root
if(root.lt != null) postOrder(root.lt);
if(root.rt != null) postOrder(root.rt);
System.out.print(root.data);
}
}
public class Main {
public static void main(String[] args) throws IOException{
Scanner sc = new Scanner (System.in);
int n = sc.nextInt();
// ํธ๋ฆฌ ์ ๋ณด ์
๋ ฅ
Tree tree = new Tree();
for(int i = 0; i < n; i++) {
tree.add(sc.next().charAt(0), sc.next().charAt(0), sc.next().charAt(0));
}
tree.preOrder(tree.root);
System.out.println();
tree.inOrder(tree.root);
System.out.println();
tree.postOrder(tree.root);
sc.close();
}
}
'Algorithm > Baekjoon' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[BAEKJOON] ๋ฐฑ์ค ๊ทธ๋ํ 1967 :: ํธ๋ฆฌ์ ์ง๋ฆ (0) | 2022.04.07 |
---|---|
[BAEKJOON] ๋ฐฑ์ค ๊ทธ๋ํ 11725:: ํธ๋ฆฌ์ ๋ถ๋ชจ ์ฐพ๊ธฐ (0) | 2022.04.05 |
[BAEKJOON] ๋ฐฑ์ค ๊ทธ๋ํ 2146 :: ๋ค๋ฆฌ ๋ง๋ค๊ธฐ (0) | 2022.04.04 |
[BAEKJOON] ๋ฐฑ์ค ๊ทธ๋ํ 2178 :: ๋ฏธ๋ก ํ์ (0) | 2022.04.03 |
[BAEKJOON] ๋ฐฑ์ค ๊ทธ๋ํ 7576 :: ํ ๋งํ (0) | 2022.04.02 |
Comments