[Data Structure] Binary Search Tree

2021. 3. 1. 11:28ยทAlgorithm/Algorithm (์ด๋ก )

 

๐Ÿ“ ๊ฐœ์š”

(1) ์ž์‹ ๋…ธ๋“œ ๊ฐฏ์ˆ˜๊ฐ€ 2๊ฐœ ์ดํ•˜๋กœ
(2) ์™ผ์ชฝ ์ž์‹์€ ๋ชจ๋‘ ๋‚˜๋ณด๋‹ค ๊ฐ’์ด ์ž‘๊ณ 
(3) ์˜ค๋ฅธ์ชฝ ์ž์‹์€ ๋ชจ๋‘ ๋‚˜๋ณด๋‹ค ๊ฐ’์ด ํฐ
๊ทธ๋ฆฌ๊ณ  ๋ชจ๋“  ์ž์‹ ๋…ธ๋“œ ๋˜ํ•œ ์œ„ 3๊ฐ€์ง€ ์„ฑ์งˆ์„ ๊ฐ–๋Š” ์ž๋ฃŒ๊ตฌ์กฐ.

 

from Wikipedia

When to use?

(1) Local Search

  • getNextNode (next Largest key except myself)
  • Range Search
    ex) 1~100 ไธญ 5~15

(2) Implements Data structure

Set, Binary Heap, Priority Queue

 

 

 

 

๐Ÿ‘จ‍๐Ÿ’ป Impelment (C++)

์™ผ์ชฝ, ์˜ค๋ฅธ์ชฝ ์ž์‹๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ๋ถ€๋ชจ๋…ธ๋“œ์™€ ์—ฐ๊ฒฐ๋„ ํ‚ต

BST.h

BST.cpp

main.cpp


Key Point (Delete Node)

 

๊ฐ€์žฅ ๊นŒ๋‹ค๋กœ์šด ๋ถ€๋ถ„์ด๊ธฐ ๋•Œ๋ฌธ์— ๊ทธ๋ฆผ๊ณผ ํ•จ๊ป˜ ์ •๋ฆฌํ•œ๋‹ค.

void BST::deleteNode(data_t key) {

// (์ค‘๋žต..)
    else if (targetNode->rightChild == nullptr) {
	// (์ค‘๋žต..)
        // ๋ถ€๋ชจ ๋…ธ๋“œ๊ฐ€ ์กด์žฌํ•˜๋Š” ๊ฒฝ์šฐ ๋ถ€๋ชจ๋กœ๋ถ€ํ„ฐ ํฌ์ธํ„ฐ๋ฅผ ์ง์ ‘ ์—ฐ๊ฒฐ์‹œ์ผœ์ค˜์•ผํ•œ๋‹ค.
      Node* parentNode = targetNode->parent;
      
      // key point!!
      if (parentNode->data > targetNode->data) parentNode->leftChild = targetNode->leftChild;
      else parentNode->rightChild = targetNode->leftChild;
      if (targetNode->leftChild != nullptr) targetNode->leftChild->parent = parentNode;

// (์ค‘๋žต..)

    } else {
        Node* nextNode = getNextNode(targetNode);
        targetNode->data = nextNode->data;
        // key point!!
        nextNode->parent->leftChild = nextNode->rightChild;

        if (nextNode->rightChild != nullptr) nextNode->rightChild->parent = nextNode->parent;
// (์ค‘๋žต..)
    }

}

 

targetNode = targetNode->leftChild
// targetNode ๋Œ€์‹  ์™ผ์ชฝ ์ž์‹์ด ์™„๋ฒฝํ•˜๊ฒŒ ๋Œ€์น˜๋œ๊ฒƒ ์ฒ˜๋Ÿผ ๋ณด์ด์ง€๋งŒ
// targetNode์˜ ๋ถ€๋ชจ๋…ธ๋“œ๋Š” ์—ฌ์ „ํžˆ targetNode์˜ ์ฃผ์†Œ๋ฅผ ๊ฐ€๋ฆฌํ‚ค๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์™„์ „ํžˆ ์‚ญ์ œ๋˜์ง€ ์•Š๋Š”๋‹ค.
// ๋”ฐ๋ผ์„œ parentNode์™€ targetNode์˜ ๋Œ€์†Œ๊ด€๊ณ„ (์™ผ์ชฝ์œ„ ๋ถ€๋ชจ? ์˜ค๋ฅธ์ชฝ ์œ„ ๋ถ€๋ชจ?) ๋ฅผ ๋”ฐ์ ธ์„œ ๋ถ€๋ชจ๋…ธ๋“œ์—์„œ targetNode์˜ ์ž์‹๋…ธ๋“œ๋กœ ํฌ์ธํ„ฐ๋ฅผ ์ด์–ด์ค˜์•ผํ•œ๋‹ค.

Linked List ์—์„œ ํŠน์ • ์›์†Œ๋ฅผ ์‚ญ์ œํ•  ๋•Œ๋„ ๊ฐ™์€ ๋ฐฉ์‹์œผ๋กœ ์ฒ˜๋ฆฌํ•œ๋‹ค.

 

has no right child 3๊ฐ€์ง€ ์ผ€์ด์Šค๋ฅผ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค.

๋ณธ๋ฌธ ์ฝ”๋“œ์˜ else if ์ ˆ์— ํ•ด๋‹นํ•œ๋‹ค.

 

 

๋ณธ๋ฌธ ์ฝ”๋“œ์˜ else ์ ˆ์— ํ•ด๋‹นํ•œ๋‹ค.

์ €์ž‘์žํ‘œ์‹œ (์ƒˆ์ฐฝ์—ด๋ฆผ)

'Algorithm > Algorithm (์ด๋ก )' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[Algorithm] BFS  (0) 2022.09.02
[Algorithm] Binary search  (0) 2022.09.02
[Algorithm] Dijkstra  (0) 2021.02.14
[Algorithm] Heap Sort  (0) 2021.02.11
[Data Structure] Priority Queue  (0) 2021.02.10
'Algorithm/Algorithm (์ด๋ก )' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • [Algorithm] BFS
  • [Algorithm] Binary search
  • [Algorithm] Dijkstra
  • [Algorithm] Heap Sort
M_Falcon
M_Falcon
  • M_Falcon
    Falcon
    M_Falcon
  • ์ „์ฒด
    ์˜ค๋Š˜
    ์–ด์ œ
    • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ (432)
      • Web (16)
        • Nodejs (14)
        • Javascript (23)
        • FrontEnd (4)
      • DataBase (39)
        • Fundamental (1)
        • Redis (4)
        • PostgreSQL (10)
        • NoSQL (4)
        • MySQL (9)
        • MSSQL (3)
        • Error (4)
      • Algorithm (79)
        • Algorithm (๋ฌธ์ œํ’€์ด) (56)
        • Algorithm (์ด๋ก ) (23)
      • JVM (65)
        • Spring (13)
        • JPA (5)
        • Kotlin (13)
        • Java (24)
        • Error (7)
      • ๊ธฐํƒ€ (70)
        • Kafka (3)
        • Kubernetes (3)
        • Docker (13)
        • git (19)
        • ์žก๋™์‚ฌ๋‹ˆ (27)
      • ์žฌํ…Œํฌ (11)
        • ์„ธ๋ฌด (4)
        • ํˆฌ์ž (3)
        • ๋ณดํ—˜ (0)
      • BlockChain (2)
        • BitCoin (0)
      • C (32)
        • C (10)
        • C++ (17)
        • Error (3)
      • Low Level (8)
        • OS (3)
        • ์‹œ์Šคํ…œ ๋ณด์•ˆ (5)
      • ๋„คํŠธ์›Œํฌ (3)
      • LINUX (30)
        • Linux (26)
        • Error (4)
      • ์ €์ž‘๊ถŒ๊ณผ ์Šค๋งˆํŠธํฐ์˜ ์ดํ•ด (0)
      • ์ƒ๊ฐ ๋ญ‰์น˜ (6)
      • ๊ถ๊ธˆ์ฆ (2)
      • Private (4)
        • ์ด์ง ๊ฒฝํ—˜ (0)
        • ๊ฟˆ์„ ์ฐพ์•„์„œ (1)
      • Android (21)
        • OS (4)
  • ๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

    • ํ™ˆ
    • WEB
    • ์•Œ๊ณ ๋ฆฌ์ฆ˜
    • DataBase
    • Linux
    • Mobile
    • C
    • ๋ฐฉ๋ช…๋ก
  • ๋งํฌ

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

  • ์ธ๊ธฐ ๊ธ€

  • ํƒœ๊ทธ

    kafka
    ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค
    java
    Spring
    ์•Œ๊ณ ๋ฆฌ์ฆ˜
    docker
    Bitcoin
    Kotlin
    android
    C++
    javascript
    Git
    database
    ubuntu
    PostgreSQL
    linux
    JPA
    algorithm
    ๋ฐฑ์ค€
    Programmers
  • hELLOยท Designed By์ •์ƒ์šฐ.v4.10.3
M_Falcon
[Data Structure] Binary Search Tree
์ƒ๋‹จ์œผ๋กœ

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