๐ŸŒป JAVA/์•Œ๊ณ ๋ฆฌ์ฆ˜, ์ž๋ฃŒ๊ตฌ์กฐ

์ž๋ฃŒ๊ตฌ์กฐ - ์ด์ง„ํƒ์ƒ‰ ํŠธ๋ฆฌ (Binary-Search-Tree)

2020. 12. 21. 11:41
๋ชฉ์ฐจ
  1. ์ด์ง„ํƒ์ƒ‰ ํŠธ๋ฆฌ ๊ตฌ์กฐ
  2.  
  3. References
๋ฐ˜์‘ํ˜•

์ด์ง„ํƒ์ƒ‰ ํŠธ๋ฆฌ ๊ตฌ์กฐ


์ด์ง„ํƒ์ƒ‰ ํŠธ๋ฆฌ์˜ ์กฐ๊ฑด (์ด์ง„ ํŠธ๋ฆฌ์™€ ๋‹ค๋ฅด๋‹ค)

  • ๋ชจ๋“  ์›์†Œ๋Š” ์ค‘๋ณต๋œ ๊ฐ’์„ ๊ฐ€์ง€๋ฉด ์•ˆ๋œ๋‹ค.
  • ํŠธ๋ฆฌ์˜ ๋ฃจํŠธ๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์™ผ์ชฝ์— ์กด์žฌํ•˜๋Š” ๋…ธ๋“œ๋“ค์˜ ๊ฐ’์€ ๋ฃจํŠธ์˜ ๊ฐ’๋ณด๋‹ค ์ž‘์•„์•ผ ํ•œ๋‹ค.
  • ๋ฐ˜๋Œ€๋กœ ์˜ค๋ฅธ์ชฝ์— ์กด์žฌํ•˜๋Š” ๋…ธ๋“œ๋“ค์˜ ๊ฐ’์€ ๋ฃจํŠธ์˜ ๊ฐ’๋ณด๋‹ค ์ปค์•ผ ํ•œ๋‹ค.

 

์ด์ง„ํƒ์ƒ‰ ํŠธ๋ฆฌ์˜ ์‚ฝ์ž…

์œ„์— ์ด์ง„ํŠธ๋ฆฌ์˜ ์กฐ๊ฑด์„ ์ด์šฉํ•ด์„œ ์‚ฝ์ž…์„ ์œ„ ๊ทธ๋ฆผ ์ฒ˜๋Ÿผ ํ•ด์ฃผ๋ฉด ๋œ๋‹ค.

์‚ฝ์ž… ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•ด ๋ณด๋ฉด,

public class BinaryTree {
    Node root;

    public void insertNode(int value) {
        /* root๊ฐ€ ๋น„์—ˆ์„ ๊ฒฝ์šฐ */
        if(root == null){
            root = new Node(value);
        }else {
            Node temp = this.root;

            while(true) {
                /* ์™ผ์ชฝ์œผ๋กœ ๊ฐ€์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ */
                if(temp.value > value){
                    if(temp.left != null){
                        temp.left = new Node(value);
                        break;
                        }
                    temp = temp.left;
                }
                /* ์˜ค๋ฅธ์ชฝ์œผ๋กœ ๊ฐ€์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ */
                else {
                    if(temp.right != null){
                        temp.right = new Node(value);
                        break;
                    }
                    temp = temp.right;
                }
            }
        }
    }
}

์ด์ง„ํƒ์ƒ‰ ํŠธ๋ฆฌ์˜ ์ˆœํšŒ ๋ฐฉ๋ฒ•

  • ์ „์œ„์ˆœํšŒ (Pre-order)
    • ๋ฃจํŠธ -> ์™ผ์ชฝ - > ์˜ค๋ฅธ์ชฝ
/* Pre-order (root - left - right) */
public void preOrderSearch(Node node) {
    if(node != null) {
        System.out.println(node.value + " -> ");
        preOrderSearch(node.left);
        preOrderSearch(node.right);
    }
}

 

A -> B -> D -> E -> C -> F -> G

 

  • ์ค‘์œ„์ˆœํšŒ (In-order)
    • ์™ผ์ชฝ -> ๋ฃจํŠธ -> ์˜ค๋ฅธ์ชฝ
/* In-order (left - root - right) */
public void inOrderSearch(Node node) {
    if(node != null) {
        inOrderSearch(node.left);
        System.out.println(node.value + " -> ");
        inOrderSearch(node.right);
    }
}

 

D -> B -> E -> A -> F -> C -> G

 

  • ํ›„์œ„์ˆœํšŒ (Post-order)
    • ์™ผ์ชฝ -> ์˜ค๋ฅธ์ชฝ - > ๋ฃจํŠธ
/* Post-order (left - right - root) */
public void postOrderSearch(Node node) {
    if(node != null) {
        postOrderSearch(node.left);
        postOrderSearch(node.right);
        System.out.println(node.value + " -> ");
    }
}

 

D -> E -> B -> F -> G -> C -> A

 

BFS - ๋„ˆ๋น„ ์šฐ์„  ํƒ์ƒ‰, DFS - ๊นŠ์ด ์šฐ์„  ํƒ์ƒ‰ ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ํ•ด๋‹น ํฌ์ŠคํŠธ๋ฅผ ์ฐธ๊ณ  ํ•˜์‹œ๊ธธ ๋ฐ”๋ž๋‹ˆ๋‹ค.

 

References


blog.naver.com/swoh1227/222175350122

k3068.tistory.com/30

๋ฐ˜์‘ํ˜•
์ €์ž‘์žํ‘œ์‹œ
  1. ์ด์ง„ํƒ์ƒ‰ ํŠธ๋ฆฌ ๊ตฌ์กฐ
  2.  
  3. References
'๐ŸŒป JAVA/์•Œ๊ณ ๋ฆฌ์ฆ˜, ์ž๋ฃŒ๊ตฌ์กฐ' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • ์•Œ๊ณ ๋ฆฌ์ฆ˜ - ์„ ํƒ ์ •๋ ฌ (Selection Sort)
  • ์•Œ๊ณ ๋ฆฌ์ฆ˜ - ํ€ต ์ •๋ ฌ (Quick-Sort)
  • ์•Œ๊ณ ๋ฆฌ์ฆ˜ - BFS(๋„ˆ๋น„ ์šฐ์„  ํƒ์ƒ‰), DFS(๊นŠ์ด ์šฐ์„  ํƒ์ƒ‰)
  • ์•Œ๊ณ ๋ฆฌ์ฆ˜ - ๋ฐฑํŠธ๋ž˜ํ‚น(Back-Tracking)
iseunghan
iseunghan
๊พธ์ค€ํ•˜๊ฒŒ ์—ด์‹ฌํžˆ..
iseunghan๊พธ์ค€ํ•˜๊ฒŒ ์—ด์‹ฌํžˆ..
iseunghan
iseunghan

๊ณต์ง€์‚ฌํ•ญ

  • ์–ด์ œ๋ณด๋‹ค ๋‚˜์€ ์˜ค๋Š˜์ด ๋˜๊ธฐ ์œ„ํ•ด ๐Ÿ”ฅ
  • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ (260)
    • ๐Ÿ’ Spring (14)
      • ๊ฐœ๋… ๋ฐ ์ดํ•ด (2)
      • Spring ํ•ต์‹ฌ ๊ธฐ์ˆ  (24)
      • Spring REST API (8)
      • Spring MVC, DB ์ ‘๊ทผ ๊ธฐ์ˆ  (7)
      • Spring Security (23)
      • Spring in Action (1)
    • ๐ŸŒป JAVA (84)
      • ์ž๋ฐ” ORM ํ‘œ์ค€ JPA ํ”„๋กœ๊ทธ๋ž˜๋ฐ (20)
      • ์•Œ๊ณ ๋ฆฌ์ฆ˜, ์ž๋ฃŒ๊ตฌ์กฐ (13)
      • ๋””์ž์ธ ํŒจํ„ด (7)
      • ์ •๋ฆฌ์ •๋ฆฌ์ •๋ฆฌ (43)
      • JUnit (1)
    • ๐Ÿ”– Snippets (3)
      • Javascript (3)
    • โš™๏ธ Devops (22)
      • โ› Git (11)
      • ๐Ÿณ Docker (6)
      • ๐Ÿง Linux (3)
      • ๐ŸŒˆ Jenkins (1)
      • ๐Ÿ“ฌ Kafka (1)
    • ๐Ÿ’ฌ ETC.. (4)
      • ๐Ÿ’ป macOS (2)
    • ๐ŸŒง๏ธ ORM (2)
      • JPA (2)
    • ๐Ÿ Python (1)
    • ๐Ÿ“š Databases (15)
      • ์˜ค๋ผํด๋กœ ๋ฐฐ์šฐ๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ฐœ๋ก ๊ณผ ์‹ค์Šต(2ํŒ) (3)
      • RealMySQL 8.0 (8)
    • ๐Ÿ”ฅ Computer Science (5)
      • ๐Ÿ“ก ๋„คํŠธ์›Œํฌ (5)
    • ๐Ÿท๏ธ ํ˜‘์—… (1)
    • ๐Ÿ“œ ์ฝ”๋”ฉํ…Œ์ŠคํŠธ (38)
      • BAEKJOON\์ˆ˜ํ•™ 1, ์ˆ˜ํ•™ 2 (8)
      • BAEKJOON\์žฌ๊ท€ (5)
      • BAEKJOON\๋ธŒ๋ฃจํŠธ ํฌ์Šค (3)
      • BAEKJOON\์ •๋ ฌ (1)
      • BAEKJOON\๋ฐฑํŠธ๋ž˜ํ‚น (5)
      • BAEKJOON\BFS, DFS (6)
      • BAEKJOON\์ด๋ถ„ํƒ์ƒ‰ (1)
      • BAEKJOON\๋‹ค์ด๋‚˜๋ฏน ํ”„๋กœ๊ทธ๋ž˜๋ฐ (9)
      • BAEKJOON\๊ทธ๋ฆฌ๋”” ์•Œ๊ณ ๋ฆฌ์ฆ˜ (0)
    • โœจ ISEUNGHAN (1)

์ธ๊ธฐ ๊ธ€

์ตœ๊ทผ ๊ธ€

์ „์ฒด
์˜ค๋Š˜
์–ด์ œ
๋ฐ˜์‘ํ˜•
hELLO ยท Designed By ์ •์ƒ์šฐ.
iseunghan
์ž๋ฃŒ๊ตฌ์กฐ - ์ด์ง„ํƒ์ƒ‰ ํŠธ๋ฆฌ (Binary-Search-Tree)
์ƒ๋‹จ์œผ๋กœ

ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”

๊ฐœ์ธ์ •๋ณด

  • ํ‹ฐ์Šคํ† ๋ฆฌ ํ™ˆ
  • ํฌ๋Ÿผ
  • ๋กœ๊ทธ์ธ

๋‹จ์ถ•ํ‚ค

๋‚ด ๋ธ”๋กœ๊ทธ

๋‚ด ๋ธ”๋กœ๊ทธ - ๊ด€๋ฆฌ์ž ํ™ˆ ์ „ํ™˜
Q
Q
์ƒˆ ๊ธ€ ์“ฐ๊ธฐ
W
W

๋ธ”๋กœ๊ทธ ๊ฒŒ์‹œ๊ธ€

๊ธ€ ์ˆ˜์ • (๊ถŒํ•œ ์žˆ๋Š” ๊ฒฝ์šฐ)
E
E
๋Œ“๊ธ€ ์˜์—ญ์œผ๋กœ ์ด๋™
C
C

๋ชจ๋“  ์˜์—ญ

์ด ํŽ˜์ด์ง€์˜ URL ๋ณต์‚ฌ
S
S
๋งจ ์œ„๋กœ ์ด๋™
T
T
ํ‹ฐ์Šคํ† ๋ฆฌ ํ™ˆ ์ด๋™
H
H
๋‹จ์ถ•ํ‚ค ์•ˆ๋‚ด
Shift + /
โ‡ง + /

* ๋‹จ์ถ•ํ‚ค๋Š” ํ•œ๊ธ€/์˜๋ฌธ ๋Œ€์†Œ๋ฌธ์ž๋กœ ์ด์šฉ ๊ฐ€๋Šฅํ•˜๋ฉฐ, ํ‹ฐ์Šคํ† ๋ฆฌ ๊ธฐ๋ณธ ๋„๋ฉ”์ธ์—์„œ๋งŒ ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค.