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

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

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

์ถœ์ฒ˜

ChatGPT


์ด์ง„ ํŠธ๋ฆฌ(Binary Tree)๋Š” ๊ฐ ๋…ธ๋“œ๊ฐ€ ์ตœ๋Œ€ ๋‘ ๊ฐœ์˜ ์ž์‹ ๋…ธ๋“œ๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋Š” ํŠธ๋ฆฌ ๊ตฌ์กฐ์ด๋‹ค. ์ด ํŠธ๋ฆฌ ๊ตฌ์กฐ๋Š” ์ปดํ“จํ„ฐ ๊ณผํ•™์—์„œ ๋งค์šฐ ๋„๋ฆฌ ์‚ฌ์šฉ๋˜๋Š” ์ž๋ฃŒ ๊ตฌ์กฐ ์ค‘ ํ•˜๋‚˜์ด๋ฉฐ, ๋ฐ์ดํ„ฐ์˜ ๊ณ„์ธต์  ๊ด€๊ณ„๋ฅผ ๋‚˜ํƒ€๋‚ด๊ฑฐ๋‚˜ ํšจ์œจ์ ์ธ ๊ฒ€์ƒ‰, ์‚ฝ์ž…, ์‚ญ์ œ ์—ฐ์‚ฐ์„ ์ง€์›ํ•˜๋Š” ๋ฐ ์œ ์šฉํ•˜๋‹ค.

 

์ด์ง„ ํŠธ๋ฆฌ์˜ ๊ธฐ๋ณธ ๊ฐœ๋…

๋ฃจํŠธ ๋…ธ๋“œ Root Node

ํŠธ๋ฆฌ์˜ ์ตœ์ƒ์œ„์— ์žˆ๋Š” ๋…ธ๋“œ์ด๋‹ค. ํŠธ๋ฆฌ๋Š” ์ด ๋…ธ๋“œ๋ฅผ ์‹œ์ž‘์œผ๋กœ ๋‹ค๋ฅธ ๋…ธ๋“œ๋“ค๊ณผ ์—ฐ๊ฒฐ๋˜๋‚˜.

์ž์‹ ๋…ธํŠธ Child Node

ํŠน์ • ๋…ธํŠธ์—์„œ ๋ฐ”๋กœ ์•„๋ž˜์— ์—ฐ๊ฒฐ๋œ ๋…ธ๋“œ์ด๋‹ค. ์ด์ „ ํŠธ๋ฆฌ์—์„œ๋Š” ์™ผ์ชฝ ์ž์‹ ๋…ธ๋“œ์™€ ์˜ค๋ฅธ์ชฝ ์ž์‹ ๋…ธ๋“œ๋กœ ๊ตฌ๋ถ„๋œ๋‹ค.

๋ถ€๋ชจ ๋…ธ๋“œ Parent Node

์ž์‹ ๋…ธ๋“œ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๋…ธ๋“œ์ด๋‹ค. ์ž์‹๊ณผ ๋ถ€๋ชจ๋Š” ์„œ๋กœ ๊ณ„์ธต์ ์œผ๋กœ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ๋‹ค.

์žŽ ๋…ธ๋“œ Leaf Node

์ž์‹ ๋…ธ๋“œ๋ฅผ ๊ฐ€์ง€์ง€ ์•Š๋Š”, ์ฆ‰ ํŠธ๋ฆฌ์˜ ๋ง๋‹จ์— ์œ„์น˜ํ•œ ๋…ธ๋“œ์ด๋‹ค.

์„œ๋ธŒํŠธ๋ฆฌ Subtree

์ด์ง„ ํŠธ๋ฆฌ์˜ ํŠน์ • ๋…ธ๋“œ๋ฅผ ๋ฃจํŠธ๋กœ ํ•˜๋Š” ํŠธ๋ฆฌ ๋ถ€๋ถ„์ด๋‹ค.

 

์ด์ง„ ํŠธ๋ฆฌ์˜ ํŠน์ง•

๋…ธ๋“œ ์ˆ˜

๋†’์ด๊ฐ€ h์ธ ์ด์ง„ ํŠธ๋ฆฌ์˜ ์ตœ๋Œ€ ๋…ธ๋“œ ์ˆ˜๋Š” 2^h -1 ๊ฐœ์ด๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ๋†’์ด๊ฐ€  3์ธ ํŠธ๋ฆฌ์˜ ์ตœ๋Œ€ ๋…ธ๋“œ ์ˆ˜๋Š” 2^3 -1 = 7 ๊ฐœ์ด๋‹ค.

ํฌํ™” ์ด์ง„ ํŠธ๋ฆฌ Full Binary Tree

๋ชจ๋“  ๋…ธ๋“œ๊ฐ€ 0๊ฐœ ๋˜๋Š” 2๊ฐœ์˜ ์ž์‹ ๋…ธ๋“œ๋ฅผ ๊ฐ€์ง€๋Š” ์ด์ง„ ํŠธ๋ฆฌ์ด๋‹ค.

์™„์ „ ์ด์ง„ ํŠธ๋ฆฌ Complete Binary Tree

๋ชจ๋“  ๋ก€๋ฒจ์—์„œ ๋…ธ๋“œ๊ฐ€ ๊ฝ‰ ์ฐจ ์žˆ์œผ๋ฉฐ, ๋งˆ์ง€๋ง‰ ๋ ˆ๋ฒจ์—์„œ๋Š” ์™ผ์ชฝ์—์„œ๋ถ€ํ„ฐ ์ฐจ๋ก€๋Œ€๋กœ ๋…ธ๋“œ๊ฐ€ ์ฑ„์›Œ์ ธ ์žˆ๋Š” ํŠธ๋ฆฌ์ด๋‹ค.

๊ท ํ˜• ์ด์ง„ ํŠธ๋ฆฌ Balanced Binary Tree

์ขŒ์šฐ ์„œ๋ธŒํ”„๋ฆฌ์˜ ๋†’์ด ์ฐจ์ด๊ฐ€ 1 ์ดํ•˜์ธ ์ด์ง„ ํŠธ๋ฆฌ์ด๋‹ค. ๊ท ํ˜•์„ ์œ ์ง€ํ•จ์œผ๋กœ์จ ๊ฒ€์ƒ‰ ๋ฐ ์‚ฝ์ž…/์‚ญ์ œ ์—ฐ์‚ฐ์ด ํšจ์œจ์ ์œผ๋กœ ์ˆ˜ํ–‰๋œ๋‹ค.

 

์ด์ง„ ํŠธ๋ฆฌ์˜ ์ข…๋ฃŒ

1. ํฌํ™” ์ด์ง„ ํŠธ๋ฆฌ Full Binary Tree

๊ฐ ๋…ธ๋“œ๊ฐ€ 0๊ฐœ ๋˜๋Š” 2๊ฐœ์˜ ์ž์‹ ๋…ธ๋“œ๋ฅผ ๊ฐ–๋Š”๋‹ค.

๋ชจ๋“  ๋ฆฌํ”„ ๋…ธ๋“œ๊ฐ€ ๋™์ผํ•œ ๊นŠ์ด์— ์žˆ๋‹ค.

    1
   / \
  2   3
 / \ / \
4  5 6  7

 

2. ์™„์ „ ์ด์ง„ ํŠธ๋ฆฌ Complete Binary Tree

๋งˆ์ง€๋ง‰ ๋ ˆ๋ฒจ์„ ์ œ์™ธํ•œ ๋ชจ๋“  ๋ ˆ๋ฒจ์ด ๊ฝ‰ ์ฐจ ์žˆ์œผ๋ฉฐ, ๋งˆ์ง€๋ง‰ ๋ ˆ๋ฒจ์˜ ๋…ธ๋“œ๋Š” ์™ผ์ชฝ์—์„œ๋ถ€ํ„ฐ ์ฑ„์›Œ์ง„๋‹ค.

    1
   / \
  2   3
 / \ / 
4  5 6

 

3. ์ด์ง„ ์ฐธ์ƒ‰ ํŠธ๋ฆฌ Binary Search Tree, BST

์™ผ์ชฝ ์ž์‹ ๋…ธ๋“œ๋Š” ๋ถ€๋ชจ๋ณด๋‹ค ์ž‘๊ณ , ์˜ค๋ฅธ์ชฝ ์ž์‹ ๋…ธ๋“œ๋Š” ๋ถ€๋ชจ๋ณด๋‹ค ํฌ๋‹ค

๋ฐ์ดํ„ฐ๋ฅผ ์ •๋ ฌ๋œ ํ˜•ํƒœ๋กœ ์ €์žฅํ•˜์—ฌ ๊ฒ€์ƒ‰, ์‚ฝ์ž…, ์‚ญ์ œ๊ฐ€ ํšจ์œจ์ ์œผ๋กœ ์ˆ˜ํ–‰๋œ๋‹ค.

    8
   / \
  3   10
 / \    \
1   6    14
   / \   /
  4   7 13

 

4. ๊ท ํ˜• ์ด์ง„ ํŠธ๋ฆฌ Balanced Binary Tree

์ขŒ์šฐ ์„œ๋ธŒํŠธ๋ฆฌ์˜ ๋†’์ด ์ฐจ์ด๊ฐ€ 1 ์ดํ•˜๋กœ ๊ท ํ˜•์„ ์œ ์ง€ํ•˜๋Š” ํŠธ๋ฆฌ์ด๋‹ค.

๋ ˆ๋“œ-๋ธ”๋ž™ ํŠธ๋ฆฌ(Red-Black Tree), AVL ํŠธ๋ฆฌ ๋“ฑ์ด ๊ท ํ˜• ์ด์ง„ ํŠธ๋ฆฌ์˜ ์˜ˆ์ด๋‹ค.

 

์ด์ง„ ํŠธ๋ฆฌ์˜ ์ˆœํšŒ Traversal

์ด์ง„ ํŠธ๋ฆฌ์—์„œ๋Š” ๋…ธ๋“œ๋ฅผ ๋ฐฉ๋ฌธํ•˜๋Š” ์ˆœ์„œ์— ๋”ฐ๋ผ ๋‹ค์–‘ํ•œ ์ˆœํšŒ ๋ฐฉ๋ฒ•์ด ์žˆ๋‹ค.

 

์˜ˆ์‹œ ์ด์ง„ ํŠธ๋ฆฌ

        1
       / \
      2   3
     / \
    4   5

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

  • ๋ฃจํŠธ -> ์™ผ์ชฝ ์„œ๋ธŒํŠธ๋ฆฌ -> ์˜ค๋ฅธ์ชฝ ์„œ๋ธŒํŠธ๋ฆฌ ์ˆœ์„œ๋กœ ๋ฐฉ๋ฌธํ•œ๋‹ค.
  • ์˜ˆ์‹œ : 1,2,4,5,3

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

  • ์™ผ์ชฝ ์„œ๋ธŒํŠธ๋ฆฌ -> ๋ฃจํŠธ -> ์˜ค๋ฅธ์ชฝ ์„œ๋ธŒํŠธ๋ฆฌ ์ˆœ์„œ๋กœ ๋ฐฉ๋ฌธํ•œ๋‹ค.
  • ์˜ˆ์‹œ : 4,2,5,1,3

3. ํ›„์œ„ ์ˆœ์œ„(Post-order Traversal)

  • ์™ผ์ชฝ ์„œ๋ธŒํŠธ๋ฆฌ -> ์˜ค๋ฅธ์ชฝ ์„œ๋ธŒํŠธ๋ฆฌ -> ๋ฃจํŠธ ์ˆœ์„œ๋กœ ๋ฐฉ๋ฌธํ•œ๋‹ค.
  • ์˜ˆ์‹œ : 4,5,2,3,1

4. ๋ ˆ๋ฒจ ์ˆœํšŒ(Level-order Traversal)

  • ํŠธ๋ฆฌ์˜ ๊ฐ ๋ ˆ๋ฒจ์„ ์™ผ์ชฝ์—์„œ ์˜ค๋ฅธ์ชฝ์œผ๋กœ ์ˆœ์„œ๋Œ€๋กœ ๋ฐฉ๋ฌธํ•œ๋‹ค.
  • ์˜ˆ์‹œ : 1,2,3,4,5

 

์ด์ง„ ํŠธ๋ฆฌ์˜ ์‹œ๊ฐ„ ๋ณต์žก๋„

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

  • ํƒ์ƒ‰: O(log n) (๊ท ํ˜• ์žกํžŒ ํŠธ๋ฆฌ์ผ ๊ฒฝ์šฐ)
  • ์‚ฝ์ž…: O(log n)
  • ์‚ญ์ œ: O(log n)

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

 

์ด์ง„ ํŠธ๋ฆฌ์˜ ์‘์šฉ

์ด์ง„ ํƒ์ƒ‰ ํŠธ๋ฆฌ BST

์ •๋ ฌ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ๋น ๋ฅด๊ฒŒ ํƒ์ƒ‰, ์‚ฝ์ž…, ์‚ญ์ œํ•˜๊ธฐ ์œ„ํ•œ ํŠธ๋ฆฌ

ํž™ Heap

์šฐ์„ ์ˆœ์œ„ ํ๋ฅผ ๊ตฌํ˜„ํ•  ๋Œ€ ์‚ฌ์šฉํ•˜๋Š” ์™„์ „ ์ด์ง„ ํŠธ๋ฆฌ

ํ—ˆํ”„๋งŒํŠธ๋ฆฌ

๋ฐ์ดํ„ฐ ์••์ถ• ์•Œ๊ณ ๋ฆฌ์ฆ˜์—์„œ ์‚ฌ์šฉํ•˜๋Š” ํŠธ๋ฆฌ ๊ตฌ์กฐ