์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- ๋ฌธ์์ด
- ์ฐ
- ๋ฐฑ์ค9012
- stream
- ์๋ฐ
- java
- ์คํธ๋ฆผ
- StringBuilder
- ์คํ์์ด
- ๋ฐฑ์ค9093
- StringBuffer
- ํ๋ฐฉ์ฟผ๋ฆฌ
- ์ฐ์ฐ์
- ์ฟ ํกERD
- ๋ฐ์ดํฐํ์
- ์
- ๋ฐฐ์ด
- ๋
- ์ฟ ํกDB
- ๋ฐฑ์ค11053 #ํ์ด์ฌ #python
- ์คํ
- ๋ฐฑ์ค1874
- Today
- Total
Tech Log ๐ ๏ธ
[๋ฐฑ์ค] 1991๋ฒ ํธ๋ฆฌ์ํ JAVA ๋ณธ๋ฌธ
๋ถ์
์ด ๋ฌธ์ ๋ฅผ ํ๋ ค๋ฉด ํธ๋ฆฌ ์๋ฃ๊ตฌ์กฐ์ ํธ๋ฆฌ์ ์ํ์ ๋ํด ์์์ผํ๋ค.
ํธ๋ฆฌ๋?
๊ฐ๊ณ๋์ ๊ฐ์ ๊ณ์ธต์ ์ธ ๊ตฌ์กฐ๋ฅผ ํํํ ๋ ์ฌ์ฉํ ์ ์๋ ์๋ฃ๊ตฌ์กฐ์ด๋ค.
๋ฃจํธ๋ ธ๋ : ๋ถ๋ชจ๊ฐ ์๋ ์ต์์ ๋ ธ๋ (F)๋จ๋ง๋ ธ๋ : ์์์ด ์๋ ๋ ธ๋ (A,C,E,H)ํฌ๊ธฐ : ํธ๋ฆฌ์ ํฌํจ ๋ ๋ ธ๋์ ๊ฐ์ (8)๊น์ด : ๊น์ด ๋ฃจํธ ๋ ธ๋๋ถํฐ์ ๊ฑฐ๋ฆฌ๋์ด : ๊น์ด ์ค ์ต๋๊ฐ (3)์ฐจ์ : ๊ฐ ๋ ธ๋์ ๊ฐ์ ๊ฐ์
* ํธ๋ฆฌ์ ํฌ๊ธฐ๊ฐ N ์ผ๋, ์ ์ฒด ๊ฐ์ ์ ๊ฐ์๋ N-1 ์ด๋ค.
ํธ๋ฆฌ์ ์ํ
ํธ๋ฆฌ ์๋ฃ๊ตฌ์กฐ์ ํฌํจ ๋ ๋ ธ๋๋ฅผ ํน์ ํ ๋ฐฉ๋ฒ์ผ๋ก ํ๋ฒ์ฉ ๋ฐฉ๋ฌธํ๋ ๋ฐฉ๋ฒ์ด๋ค.
๋ํ์ ์ธ ์ํ์ ๋ฐฉ๋ฒ์ 3๊ฐ์ง๊ฐ ์๋ค.
1. ์ ์ ์ํ : ๋ฃจํธ๋ ธ๋ -> ์ผ์ชฝ ์์ ๋ ธ๋ -> ์ค๋ฅธ์ชฝ ์์ ๋ ธ๋ ์์ผ๋ก ๋ฐฉ๋ฌธํ๋ค.
F B A D C E G I H
2. ์ค์ ์ํ : ์ผ์ชฝ ์์๋ ธ๋ -> ๋ฃจํธ ๋ ธ๋ -> ์ค๋ฅธ์ชฝ ์์ ๋ ธ๋
A B C D E F G H I
3. ํ์ ์ํ : ์ผ์ชฝ ์์๋ ธ๋ -> ์ค๋ฅธ์ชฝ ์์ ๋ ธ๋ -> ๋ฃจํธ ๋ ธ๋
A C E D B H I G F
์์ ๋ฐฉ๋ฒ์ ์ ์ฉํด์ ์ ๋ ฅ์ผ๋ก ๋ ธ๋๊ฐ ์ฐ๊ฒฐ ์ ๋ณด๋ฅผ ๋ฐ์ ๋ค์ ์ํ ๊ฒฐ๊ณผ๋ฅผ ์ถ๋ ฅํ๋ฉด ๋๋ค.
์ฝ๋
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Main {
//์ต์์ ๋ฃจํธ ๋
ธ๋ ์์ฑ
static Node root = new Node('A',null,null);
//ํธ๋ฆฌ์ ๋ค์ด๊ฐ ๋
ธ๋ ํด๋์ค
static class Node{
char name;
Node left;
Node right;
public Node(char name, Node left, Node right) {
this.name = name;
this.left = left;
this.right = right;
}
}
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int num = Integer.parseInt(br.readLine());
for(int i=0;i<num;i++){
StringTokenizer st = new StringTokenizer(br.readLine());
InsertNode(root,st.nextToken().charAt(0),st.nextToken().charAt(0),st.nextToken().charAt(0));
}
preOrder(root);
System.out.println();
inOrder(root);
System.out.println();
postOrder(root);
}
private static void InsertNode(Node root, char value, char left, char right) {
//ํ์ฌ ๋
ธ๋์ value ์ ๊ฐ์ด ๊ฐ๋ค๋ฉด
if(root.name == value){
root.left = (left == '.' ? null : new Node(left,null,null));
root.right = (right == '.' ? null : new Node(right,null,null));
}
else{
//์ผ์ชฝ ์์๋
ธ๋๊ฐ ์กด์ฌํ๋ค๋ฉด ํด๋น ๋
ธ๋ ํ์ ํ ์์ ๋
ธ๋ ์ถ๊ฐ
if(root.left != null) InsertNode(root.left,value,left,right);
//์ค๋ฅธ์ชฝ ์์๋
ธ๋๊ฐ ์กด์ฌํ๋ค๋ฉด ํด๋น ๋
ธ๋ ํ์ ํ ์์ ๋
ธ๋ ์ถ๊ฐ
if(root.right != null) InsertNode(root.right,value,left,right);
}
}
//์ ์ ์ํ
static void preOrder(Node node){
if(node == null) return;
System.out.print(node.name+" ");
preOrder(node.left);
preOrder(node.right);
}
//์ค์ ์ํ
static void inOrder(Node node){
if(node == null) return;
inOrder(node.left);
System.out.print(node.name+" ");
inOrder(node.right);
}
//ํ์ ์ํ
static void postOrder(Node node){
if(node == null) return;
postOrder(node.left);
postOrder(node.right);
System.out.print(node.name+" ");
}
}
์ฐธ๊ณ ์ฌ์ดํธ
https://www.youtube.com/watch?v=i5yHkP1jQmo&t=470s
'์๊ณ ๋ฆฌ์ฆ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
์ ๋ ฌ ์๊ณ ๋ฆฌ์ฆ์ด๋? (0) | 2023.04.23 |
---|---|
[๋ฐฑ์ค] 14889๋ฒ ์คํํธ์ ๋งํฌ ์๋ฐ(๋ฐฑํธ๋ํน , ๋นํธ๋ง์คํน) (0) | 2023.03.28 |
[๋ฐฑ์ค] 11723 ์งํฉ JAVA (2) | 2023.03.23 |
[๋ฐฑ์ค] ๋ฐฑ์ค ๊ณจ๋ ๋ฌ์ฑ ! (0) | 2023.03.22 |
๋ฐฑ์ค 1260๋ฒ) DFS์ BFS java (0) | 2023.03.13 |