๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

๋นˆ ๊ตฌ๋ฉ ์ฑ„์šฐ๊ธฐ

[์ž๋ฃŒ ๊ตฌ์กฐ] ์ด์ง„ ํƒ์ƒ‰ ํŠธ๋ฆฌ Binary search Tree, BST

์ถœ์ฒ˜

ChatGPT


์ด์ง„ ํƒ์ƒ‰ ํŠธ๋ฆฌ๋Š” ์ด์ง„ ํŠธ๋ฆฌ์˜ ํ•œ ์ข…๋ฅ˜๋กœ, ๊ฐ ๋…ธ๋“œ์— ์ €์žฅ๋œ ๊ฐ’์ด ํŠน์ • ๊ทœ์น™์„ ๋”ฐ๋ฅด๋ฉฐ ์ •๋ ฌ๋œ ์ƒํƒœ๋ฅผ ์œ ์ง€ํ•˜๋Š” ํŠธ๋ฆฌ์ด๋‹ค. ์ด ๊ทœ์น™ ๋•๋ถ„์— ๋น ๋ฅธ ๊ฒ€์ƒ‰, ์‚ฝ์ž…, ์‚ญ์ œ ์—ฐ์‚ฐ์ด ๊ฐ€๋Šฅํ•˜์—ฌ, ๋ฐ์ดํ„ฐ์˜ ํšจ์œจ์ ์ธ ๊ด€๋ฆฌ๋ฅผ ์ œ๊ณตํ•œ๋‹ค.

 

1. ๊ตฌ์กฐ

์ด์ง„ ํƒ์ƒ‰ ํŠธ๋ฆฌ์˜ ๊ฐ ๋…ธ๋“œ๋Š” ์ตœ๋Œ€ ๋‘ ๊ฐœ์˜ ์ž์‹ ๋…ธ๋“œ๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋‹ค. ๊ฐ ๋…ธ๋“œ๋Š” ํŠธ๋ฆฌ์˜ ํŠน์ • ๊ทœ์น™์— ๋”ฐ๋ผ ๋ฐฐ์น˜๋œ๋‹ค.

๊ทœ์น™

1. ์™ผ์ชฝ ์ž์‹ ๋…ธ๋“œ : ๋ถ€๋ชจ ๋…ธ๋“œ๋ณด๋‹ค ์ž‘์€ ๊ฐ’

2. ์˜ค๋ฅธ์ชฝ ์ž์‹ ๋…ธ๋“œ : ๋ถ€๋ชจ ๋…ธ๋“œ๋ณด๋‹ค ํฐ ๊ฐ’

 

์ด ๊ทœ์น™์œผ๋กœ ์ธํ•ด ํŠธ๋ฆฌ์˜ ์–ด๋Š ์ง€์ ์—์„œ๋„ ์™ผ์ชฝ ์„œ๋ธŒํŠธ๋ฆฌ๋Š” ๋ถ€๋ชจ๋‹ค ์ž‘์€ ๊ฐ’๋“ค๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ๊ณ , ์˜ค๋ฅธ์ชฝ ์„œ๋ธŒํŠธ๋ฆฌ๋Š” ๋ถ€๋ชจ๋ณด๋‹ค ํฐ ๊ฐ’๋“ค๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ์–ด, ํƒ์ƒ‰์ด ๋งค์šฐ ๋น ๋ฅด๊ฒŒ ์ด๋ฃจ์–ด์งˆ ์ˆ˜ ์žˆ๋‹ค.

 

์˜ˆ์‹œ

        50
       /  \
     30    70
    /  \   /  \
   20  40 60  80

 

  • ์™ผ์ชฝ ์ž์‹ ๋…ธ๋“œ : ๋ถ€๋ชจ ๋…ธ๋“œ๋ณด๋‹ค ์ž‘์€ ๊ฐ’(์˜ˆ: 30์€ 50๋ณด๋‹ค ์ž‘๋‹ค)
  • ์˜ค๋ฅธ์ชฝ ์ž์‹ ๋…ธ๋“œ : ๋ถ€๋ชจ ๋…ธ๋“œ๋ณด๋‹ค ํฐ ๊ฐ’(์˜ˆ: 70์€ 50๋ณด๋‹ค ํฌ๋‹ค)

 

2. ์—ฐ์‚ฐ ๋ฐ ์‹œ๊ฐ„ ๋ณต์žก๋„

BST์˜ ์ฃผ์š” ์—ฐ์‚ฐ์€ ํƒ์ƒ‰, ์‚ฝ์ž…, ์‚ญ์ œ์ด๋‹ค. ์ด๋“ค์€ ๋ชจ๋‘ ํŠธ๋ฆฌ์˜ ๋†’์ด์— ๋”ฐ๋ผ ๋‹ฌ๋ผ์ง€๋ฉฐ, ์ตœ์„ ์˜ ๊ฒฝ์šฐ์™€ ์ตœ์•…์˜ ๊ฒฝ์šฐ๊ฐ€ ๋‚˜๋‰˜์–ด ์žˆ๋‹ค.

(1) ํƒ์ƒ‰ Search

ํŠธ๋ฆฌ์˜ ๋ฃจํŠธ์—์„œ ์‹œ์ž‘ํ•ด, ์ฐพ๊ณ ์ž ํ•˜๋Š” ๊ฐ’์ด ํ˜„์žฌ ๋…ธ๋“œ๋ณด๋‹ค ์ž‘์œผ๋ฉด ์™ผ์ชฝ์œผ๋กœ, ํฌ๋ฉด ์˜ค๋ฅธ์กฑ์œผ๋กœ ์ด๋™ํ•œ๋‹ค.

์ด ๊ณผ์ •์„ ๋ฐ˜๋ณตํ•ด ๊ฐ’์ด ์žˆ๋Š” ๋…ธ๋“œ๋ฅผ ์ฐพ๋Š”๋‹ค.

์‹œ๊ฐ„ ๋ณต์žก๋„

ํ‰๊ท  : O(log n)

ํŠธ๋ฆฌ๊ฐ€ ๊ท ํ˜•์„ ์œ ์ง€ํ•  ๊ฒฝ์šฐ, ํŠธ๋ฆฌ์˜ ๋†’์ด๋Š” log n์— ๋น„๋ก€ํ•˜๋ฏ€๋กœ, ํƒ์ƒ‰์€ log n ๋‹จ๊ณ„์—์„œ ๋๋‚œ๋‹ค.

์ตœ์•…์˜ ๊ฒฝ์šฐ : O(n)

ํŠธ๋ฆฌ๊ฐ€ ํ•œ ์ชฝ์œผ๋กœ ์น˜์šฐ์ณ์งˆ ๊ฒฝ์šฐ(์ฆ‰, ์Šคํ ํŠธ๋ฆฌ(Skewed Tree)), ๋ฆฌ์ŠคํŠธ์™€ ๊ฐ™์€ ๊ตฌ์กฐ๊ฐ€ ๋˜์–ด ํƒ์ƒ‰์— ์ตœ๋Œ€ n ๋‹จ๊ณ„๋ฅผ ๊ฑฐ์น  ์ˆ˜ ์žˆ๋‹ค.

 

์˜ˆ์‹œ

        50
       /  \
     30    70
    /  \   /  \
   20  40 60  80

 

ํ•ด๋‹น ํŠธ๋ฆฌ์—์„œ 40์„ ์ฐพ์œผ๋ ค๋ฉด, 50 -> 30 -> 40 ์ˆœ์„œ๋กœ ํƒ์ƒ‰ํ•œ๋‹ค.

 

(2) ์‚ฝ์ž… Insertion

์‚ฝ์ž…ํ•  ๊ฐ’์„ ํƒ์ƒ‰ํ•ด ์ ์ ˆํ•œ ์œ„์น˜(์™ผ์ชฝ ๋˜๋Š” ์˜ค๋ฅธ์ชฝ)์— ์‚ฝ์ž…ํ•œ๋‹ค.

์ƒˆ๋กœ์šด ๋…ธ๋“œ๋ฅผ ํ•ญ์ƒ ๋ฆฌํ”„ ๋…ธ๋“œ๋กœ ์‚ฝ์ž…๋œ๋‹ค.

์‹œ๊ฐ„๋ณต์žก๋„

ํ‰๊ท  : O(log n)

ํŠธ๋ฆฌ๊ฐ€ ๊ท ํ˜•์„ ์ด๋ฃจ๊ณ  ์žˆ๋‹ค๋ฉด, ์‚ฝ์ž… ๊ณผ์ •๋„ log n ๋‹จ๊ณ„์—์„œ ๋๋‚œ๋‹ค.

์ตœ์•…์˜ ๊ฒฝ์šฐ : O(n)

ํŠธ๋ฆฌ๊ฐ€ ํ•œ ์ชฝ์œผ๋กœ ์น˜์šฐ์ณ ์žˆ์„ ๋•Œ, ๋ฆฌ์ŠคํŠธ์™€ ๊ฐ™์€ ๊ตฌ์กฐ๊ฐ€ ๋˜์–ด ์‚ฝ์ž…์— n ๋‹จ๊ณ„๋ฅผ ๊ฑฐ์น  ์ˆ˜ ์žˆ๋‹ค.

 

์˜ˆ์‹œ

        50
       /  \
     30    70
    /  \   /  \
   20  40 60  80
      /
   (+35)

 

ํ•ด๋‹น ํŠธ๋ฆฌ์—  35๋ฅผ ์‚ฝ์ž…ํ•˜๋ ค๋ฉด, 50 -> 30 -> 40๊นŒ์ง€ ํƒ์ƒ‰ํ•ด 40์˜ ์™ผ์ชฝ ์ž์‹์œผ๋กœ 35๋ฅผ ์‚ฝ์ž…ํ•œ๋‹ค.

 

(3) ์‚ญ์ œ Deletion

์‚ญ์ œํ•  ๋…ธ๋“œ๋ฅผ ์ฐพ๊ณ , ์„ธ ๊ฐ€์ง€ ๊ฒฝ์šฐ์— ๋”ฐ๋ผ ์‚ญ์ œ๋ฅผ ์ฒ˜๋ฆฌํ•œ๋‹ค.

1. ์ž์‹์ด ์—†๋Š” ๊ฒฝ์šฐ : ๋‹จ์ˆœํžˆ ์‚ญ์ œ

2. ์ž์‹์ด ํ•˜๋‚˜์ผ ๊ฒฝ์šฐ : ์ž์‹ ๋…ธ๋“œ๋ฅผ ๋ถ€๋ชจ์™€ ์—ฐ๊ฒฐํ•œ ๋’ค ์‚ญ์ œ

3. ์ž์‹์ด ๋‘ ๊ฐœ์ธ ๊ฒฝ์šฐ :๋Œ€์ฒด ๋…ธ๋“œ๋ฅผ ์ฐพ๋Š”๋‹ค. ๋Œ€์ฒดํ•  ๋…ธ๋“œ๋Š” ๋‘ ๊ฐ€์ง€ ๋ฐฉ๋ฒ• ์ค‘์— ํ•˜๋‚˜๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

  • ์˜ค๋ฅธ์ชฝ ์„œ๋ธŒํŠธ๋ฆฌ์—์„œ ๊ฐ€์žฅ ์ž‘์€ ๊ฐ’(ํ›„์†์ž): ์˜ค๋ฅธ์ชฝ ์„œ๋ธŒํŠธ๋ฆฌ์—์„œ ๊ฐ€์žฅ ์ž‘์€ ๊ฐ’์„ ์ฐพ์•„์„œ ๋Œ€์ฒดํ•œ๋‹ค. 
  • ์™ผ์ชฝ ์„œ๋ธŒํŠธ๋ฆฌ์—์„œ ๊ฐ€์žฅ ํฐ ๊ฐ’(์ „์ž„์ž) : ์™ผ์ชฝ ์„œ๋ธŒํŠธ๋ฆฌ์—์„œ ๊ฐ€์žฅ ํฐ ๊ฐ’์„ ์ฐพ์•„ ๋Œ€์ฒดํ•œ๋‹ค.

์‹œ๊ฐ„ ๋ณต์žก๋„

ํ‰๊ท  : O(log n)

ํŠธ๋ฆฌ๊ฐ€ ๊ท ํ˜•์„ ์œ ์ง€ํ•˜๊ณ  ์žˆ์œผ๋ฉด ์‚ญ์ œ๋„ log n์˜ ์‹œ๊ฐ„ ๋ณต์žก๋„๋ฅผ ๊ฐ€์ง„๋‹ค.

์ตœ์•…์˜ ๊ฒฝ์šฐ : O(n)

ํŠธ๋ฆฌ๊ฐ€ ํ•œ ์ชฝ์œผ๋กœ ์น˜์šฐ์ณ ์žˆ์„ ๋•Œ, ์‚ญ์ œ์— ์ตœ๋Œ€ n ๋‹จ๊ณ„๊ฐ€ ๊ฑธ๋ฆด ์ˆ˜ ์žˆ๋‹ค.

 

์˜ˆ์‹œ

        50
       /  \
     30    70
    /  \   / \
   20  40 60  80

 

ํ•ด๋‹น ํŠธ๋ฆฌ์—์„œ 50์„ ์‚ญ์ œํ•˜๋ ค๊ณ  ํ•œ๋‹ค. ์ด ๊ฒฝ์šฐ, ์˜ค๋ฅธ์ชฝ ์„œ๋ธŒํŠธ๋ฆฌ์—์„œ ๊ฐ€์žฅ ์ž‘์€ ๊ฐ’ ๋˜๋Š” ์™ผ์ชฝ ์„œ๋ธŒํŠธ๋ฆฌ์—์„œ ๊ฐ€์žฅ ํฐ ๊ฐ’์„ ์ฐพ์•„์„œ ๋Œ€์ฒดํ•œ๋‹ค.

 

1. ์˜ค๋ฅธ์ชฝ ์„œ๋ธŒํŠธ๋ฆฌ์—์„œ ๊ฐ€์žฅ ์ž‘์€ ๊ฐ’(ํ›„์†์ž)๋ฅผ ์ฐพ๋Š” ๊ฒฝ์šฐ

์˜ค๋ฅธ์ชฝ ์„œ๋ธŒํŠธ๋ฆฌ970, 60, 80)์—์„ฏ ๊ฐ€์žฅ ์ž‘์€ ๊ฐ’์€ 60์ด๋‹ค.

๋”ฐ๋ผ์„œ 60์„ ์‚ญ์ œํ•  50 ๋…ธํŠธ์˜ ์œ„์น˜๋กœ ๊ฐ€์ ธ์˜ค๊ณ , ๊ธฐ์กด ๋ฆฌํ”„ ๋…ธ๋“œ์ธ 60 ๋…ธ๋“œ๋Š” ์‚ญ์ œํ•œ๋‹ค.

์ตœ์ข… ํŠธ๋ฆฌ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค

        60
       /  \
     30    70
    /  \     \
   20  40    80

 

2. ์™ผ์ชฝ ์„œ๋ธŒํŠธ๋ฆฌ์—์„œ ๊ฐ€์žฅ ํฐ ๊ฐ’(์ „์ž„์ž)๋ฅผ ์ฐพ๋Š” ๊ฒฝ์šฐ

์™ผ์ชฝ ์„œ๋ธŒํŠธ๋ฆฌ์—์„œ ๊ฐ€์žฅ ํฐ ๊ฐ’์€ 40์ด๋‹ค.

40์„ ์‚ญ์ œํ•  50 ๋…ธ๋“œ์˜ ์œ„์น˜๋กœ ๊ฐ€์ ธ์˜ค๊ณ , ๊ธฐ์กด ๋ฆฌํ”„ ๋…ธ๋“œ์ธ 40 ๋…ธ๋“œ๋Š” ์™ผ์ชฝ ์„œ๋ธŒ ํŠธ๋ฆฌ์—์„œ ์‚ญ์ œํ•œ๋‹ค.

์ตœ์ข… ํŠธ๋ฆฌ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

        40
       /  \
     30    70
    /      / \
   20     60  80

 

3. BST์˜ ์žฅ์ ๊ณผ ๋‹จ์ 

์žฅ์ 

๋น ๋ฅธ ํƒ์ƒ‰

์ž˜ ๊ท ํ˜•์žกํžŒ BST๋Š” ํƒ์ƒ‰, ์‚ฝ์ž…, ์‚ญ์ œ ์—ฐ์‚ฐ์—์„œ O(log n)์˜ ์‹œ๊ฐ„ ๋ณต์žก๋„๋ฅผ ๊ฐ€์ง„๋‹ค.

์ •๋ ฌ๋œ ์ˆœ์„œ๋กœ ์ €์žฅ 

BST๋Š” ์ค‘์œ„ ์ˆœํšŒ(In-order Traversal)๋ฅผ ํ•˜๋ฉด ๋ชจ๋“  ์š”์†Œ๋ฅผ ์ •๋ ฌ๋œ ์ˆœ์„œ๋กœ ์–ป์„ ์ˆ˜ ์žˆ๋‹ค.

 

๋‹จ์ 

ํŠธ๋ฆฌ์˜ ๊ท ํ˜• ๋ฌธ์ œ

์ผ๋ฐ˜์ ์ธ BST๋Š” ์‚ฝ์ž… ์ˆœ์„œ์— ๋”ฐ๋ผ ํŠธ๋ฆฌ๊ฐ€ ํ•œ์ชฝ์œผ๋กœ ์น˜์šฐ์ณ์งˆ ์ˆ˜ ์žˆ๋‹ค. ์ด๋Ÿฌํ•œ ๊ฒฝ์šฐ ์„ฑ๋Šฅ์ด O(n)์œผ๋กœ ์ €ํ•˜๋œ๋‹ค.

์ด๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ์ž๊ฐ€ ๊ท ํ˜• ์ด์ง„ ํƒ์ƒ‰ ํŠธ๋ฆฌ(๋ ˆ๋“œ-๋ธ”๋ž™ ํŠธ๋ฆฌ, AVL ํŠธ๋ฆฌ)๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

 

4. BST์˜ ์ˆœํšŒ Traversal

BST์—์„œ ๋…ธ๋“œ๋ฅผ ์ˆœํšŒํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ํฌ๊ฒŒ ์„ธ ๊ฐ€์ง€์ด๋‹ค.

1. ์ „์œ„ ์ˆœํšŒ Pre-order Traversal

๋ฃจํŠธ -> ์™ผ์ชฝ -> ์˜ค๋ฅธ์ชฝ ์ˆœ์„œ๋กœ ๋ฐฉ๋ฌธ

2. ์ค‘์œ„ ์ˆœํšŒ In-order Traversal

์™ผ์ชฝ -> ๋ฃจํŠธ -> ์˜ค๋ฅธ์ชฝ ์ˆœ์„œ๋กœ ๋ฐฉ๋ฌธ

BST์—์„œ ์ค‘์œ„ ์ˆœํšŒ๋Š” ์ •๋ ฌ๋œ ์ˆœ์„œ๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

3. ํ›„์œ„ ์ˆœํšŒ Post-order Traversal

์™ผ์ชฝ -> ์˜ค๋ฅธ์ชฝ -> ๋ฃจํŠธ ์ˆœ์„œ๋กœ ๋ฐฉ๋ฌธ

 

์ค‘์œ„ ์ˆœํšŒ์˜ ์˜ˆ์‹œ

        50
       /  \
     30    70
    /  \   /  \
   20  40 60  80

 

์ค‘์œ„ ์ˆœํšŒ ๊ฒฐ๊ณผ : 20, 30, 40, 50, 60, 70, 80

 

5. BST์˜ ์ตœ์•…์˜ ๊ฒฝ์šฐ

์ด์ง„ ํƒ์ƒ‰ ํŠธ๋ฆฌ๊ฐ€ ํ•œ ์ชฝ์œผ๋กœ ์น˜์šฐ์ณ์ง€๋Š” ๊ฒฝ์šฐ, ํŠธ๋ฆฌ๋Š” ์‚ฌ์‹ค ์ƒ ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ์™€ ๊ฐ™์€ ํ˜•ํƒœ๊ฐ€ ๋œ๋‹ค. ์ด ๊ฒฝ์šฐ ํƒ์ƒ‰, ์‚ฝ์ž…, ์‚ญ์ œ์˜ ์‹œ๊ฐ„ ๋ณต์žก๋„๋Š” O(n)๊นŒ์ง€ ๋‚˜๋น ์ง„๋‹ค.

 

์น˜์šฐ์ณ์ง„ ํŠธ๋ฆฌ(์ŠคํŠœ ํŠธ๋ฆฌ)์˜ ์˜ˆ

  10
    \
     20
       \
        30
          \
           40

 

์ด ๊ฒฝ์šฐ ๊ฐ ์—ฐ์‚ฐ์—์„œ ๋ชจ๋“  ๋…ธ๋“œ๋ฅผ ๊ฑฐ์ณ์•ผ ํ•˜๋ฏ€๋กœ, ์„ฑ๋Šฅ์ด ์ €ํ•˜๋œ๋‹ค.

 

6. ์ž๊ฐ€ ๊ท ํ˜• ์ด์ง„ ํƒ์ƒ‰ ํŠธ๋ฆฌ์™€์˜ ์ฐจ์ด์ 

์ผ๋ฐ˜์ ์ธ ์ด์ง„ ํƒ์ƒ‰ ํŠธ๋ฆฌ๋Š” ์‚ฝ์ž… ์ˆœ์„œ์— ๋”ฐ๋ผ ํŠธ๋ฆฌ๊ฐ€ ํ•œ ์ชฝ์œผ๋กœ ์น˜์šฐ์น  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์—, ์ž๊ฐ€ ๊ท ํ˜• ์ด์ง„ ํƒ์ƒ‰ ํŠธ๋ฆฌ(Self-Balancing Binary Search Tree)๊ฐ€ ํ•„์š”ํ•˜๋‹ค. ์ž๊ฐ€ ๊ท ํ˜• ํŠธ๋ฆฌ(์˜ˆ - ๋ ˆ๋“œ-๋ธ”๋ž™ ํŠธ๋ฆฌ, AVL ํŠธ๋ฆฌ)๋Š” ์‚ฝ์ž…, ์‚ญ์ œ ํ›„์—๋„ ํŠธ๋ฆฌ๊ฐ€ ๊ท ํ˜•์„ ์œ ์ง€ํ•˜์—ฌ, ๋ชจ๋“  ์—ฐ์‚ฐ์—์„œ O(log n)์˜ ์„ฑ๋Šฅ์„ ๋ณด์žฅํ•œ๋‹ค.