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

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

[์ž๋ฃŒ๊ตฌ์กฐ] ํŠธ๋ฆฌ Tree

์ถœ์ฒ˜

ChatGPT


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

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

1. ๋…ธ๋“œ(Node)

ํŠธ๋ฆฌ์˜ ๊ธฐ๋ณธ ๊ตฌ์„ฑ ์š”์†Œ๋กœ, ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ด๊ณ  ์žˆ๋‹ค. ๊ฐ ๋…ธ๋“œ๋Š” ๋ถ€๋ชจ ๋…ธ๋“œ๋‚˜ ์ž์‹ ๋…ธ๋“œ์™€ ์—ฐ๊ฒฐ๋œ๋‹ค.

2. ๋ฃจํŠธ ๋…ธ๋“œ(Root Node)

ํŠธ๋ฆฌ์˜ ์ตœ์ƒ์œ„ ๋…ธ๋“œ๋กœ, ํŠธ๋ฆฌ์˜ ์‹œ์ž‘์ ์ด ๋œ๋‹ค. ํŠธ๋ฆฌ๋Š” ๋ฃจํŠธ ๋…ธ๋“œ๋ฅผ ๊ธฐ์ค€์œผ๋กœ ๊ณ„์ธต์„ ํ˜•์„ฑํ•œ๋‹ค.

3. ์ž์‹ ๋…ธ๋“œ(Child Node)

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

4. ๋ถ€๋ชจ ๋…ธ๋“œ(Parent Node)

์ž์‹ ๋…ธ๋“œ๋ฅผ ๊ฐ€์ง€๋Š” ๋…ธ๋“œ์ž…๋‹ˆ๋‹ค. ์ž์‹ ๋…ธ๋“œ์™€ ์—ฐ๊ฒฐ๋œ ์ƒ์œ„ ๋…ธ๋“œ๋ฅผ ๋ถ€๋ชจ ๋…ธ๋“œ๋ผ๊ณ  ํ•œ๋‹ค.

5. ์žŽ(๋ฆฌํ”„) ๋…ธ๋“œ(Leaf Node)

์ž์‹ ๋…ธ๋“œ๊ฐ€ ์—†๋Š” ๋…ธ๋“œ๋กœ, ํŠธ๋ฆฌ์˜ ๋๋ถ€๋ถ„์„ ๋‚˜ํƒ€๋‚ธ๋‹ค.

6. ์„œ๋ธŒํŠธ๋ฆฌ(Subtree)

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

7. ๊ฐ„์„ (Edge)

ํŠธ๋ฆฌ์˜ ๋…ธ๋“œ ๊ฐ„์„ ์—ฐ๊ฒฐํ•˜๋Š” ์„ ์ž…๋‹ˆ๋‹ค. ๋ถ€๋ชจ ๋…ธ๋“œ์™€ ์ž์‹ ๋…ธ๋“œ ๊ฐ„์˜ ๊ด€๊ณ„๋ฅผ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.

8. ๋ ˆ๋ฒจ(Level)

ํŠธ๋ฆฌ์˜ ๊นŠ์ด(depth)๋ฅผ ๋‚˜ํƒ€๋‚ด๋ฉฐ, ๋ฃจํŠธ ๋…ธ๋“œ์—์„œ ํŠน์ • ๋…ธ๋“œ๊นŒ์ง€์˜ ๊ฑฐ๋ฆฌ๋ฅผ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

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

1. ๊ณ„์ธต ๊ตฌ์กฐ

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

2. ๋ฃจํŠธ ๋…ธ๋“œ

ํŠธ๋ฆฌ์—๋Š” ๋ฐ˜๋“œ์‹œ ํ•˜๋‚˜์˜ ๋ฃจํŠธ ๋…ธ๋“œ๊ฐ€ ์กด์žฌํ•˜๋ฉฐ, ๋ฃจํŠธ์—์„œ๋ถ€ํ„ฐ ์ž์‹ ๋…ธ๋“œ๋กœ ์—ฐ๊ฒฐ๋ฉ๋‹ˆ๋‹ค.

3. ์‚ฌ์ดํด ์—†์Œ

ํŠธ๋ฆฌ ๊ตฌ์กฐ๋Š” ์‚ฌ์ดํด์ด ์—†๋Š” ๊ทธ๋ž˜ํ”„์ž…๋‹ˆ๋‹ค. ์ฆ‰, ์–ด๋–ค ๋…ธ๋“œ๋„ ์ž์‹ ๋…ธ๋“œ๋‚˜ ํ•˜์œ„ ๋…ธ๋“œ๋ฅผ ํ†ตํ•ด ๋‹ค์‹œ ์ž๊ธฐ ์ž์‹ ์œผ๋กœ ๋Œ์•„์˜ฌ ์ˆ˜ ์—†๋‹ค.

4. ์ž์‹ ๋…ธ๋“œ ๊ฐœ์ˆ˜

ํŠธ๋ฆฌ์˜ ๊ฐ ๋…ธ๋“œ๋Š” ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์ž์‹ ๋…ธ๋“œ๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์žˆ์ง€๋งŒ, ํŠน์ • ํŠธ๋ฆฌ์—์„œ๋Š” ์ž์‹ ๋…ธ๋“œ์˜ ์ˆ˜๋ฅผ ์ œํ•œํ•˜๊ธฐ๋„ ํ•ฉ๋‹ˆ๋‹ค(์˜ˆ: ์ด์ง„ ํŠธ๋ฆฌ์—์„œ๋Š” ๊ฐ ๋…ธ๋“œ๊ฐ€ ์ตœ๋Œ€ ๋‘ ๊ฐœ์˜ ์ž์‹ ๋…ธ๋“œ๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์žˆ์Œ).

ํŠธ๋ฆฌ์˜ ์ข…๋ฅ˜

1. ์ผ๋ฐ˜ ํŠธ๋ฆฌ General Tree

๊ฐ ๋…ธ๋“œ๊ฐ€ ์ž์‹ ๋…ธ๋“œ๋ฅผ ์—ฌ๋Ÿฌ ๊ฐœ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋Š” ํŠธ๋ฆฌ์ด๋‹ค. ์ž์‹ ๋…ธ๋“œ์˜ ์ˆ˜์— ์ œํ•œ์ด ์—†๋‹ค.

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

๊ฐ ๋…ธ๋“œ๊ฐ€ ์ตœ๋Œ€ ๋‘ ๊ฐœ์˜ ์ž์‹ ๋…ธ๋“œ๋ฅผ ๊ฐ€์ง€๋Š” ํŠธ๋ฆฌ์ด๋‹ค. ์ž์‹ ๋…ธ๋“œ๋Š” ์™ผ์ชฝ ์ž์‹๊ณผ ์˜ค๋ฅธ์ชฝ ์ž์‹์œผ๋กœ ๋‚˜๋‰œ๋‹ค.

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

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

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

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

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

์ด์ง„ ํŠธ๋ฆฌ์˜ ํ•œ ์ข…๋ฅ˜๋กœ, ์™ผ์ชฝ ์ž์‹ ๋…ธ๋“œ๋Š” ๋ถ€๋ชจ ๋…ธ๋“œ๋ณด๋‹ค ์ž‘์€ ๊ฐ’, ์˜ค๋ฅธ์ชฝ ์ž์‹ ๋…ธ๋“œ๋Š” ๋ถ€๋ชจ ๋…ธ๋“œ๋ณด๋‹ค ํฐ ๊ฐ’์„ ๊ฐ€์ง€๋Š” ํŠธ๋ฆฌ์ด๋‹ค.

6. ๊ท ํ˜• ํŠธ๋ฆฌ Balanced Tree

ํŠธ๋ฆฌ์˜ ๋ชจ๋“  ๋…ธ๋“œ๊ฐ€ ์ขŒ์šฐ ๊ท ํ˜•์„ ์ด๋ฃจ๋„๋ก ์œ ์ง€๋˜๋Š” ํŠธ๋ฆฌ์ด๋‹ค. ๊ท ํ˜• ํŠธ๋ฆฌ์—์„œ๋Š” ์‚ฝ์ž…๊ณผ ์‚ญ์ œ๊ฐ€ ์ด๋ฃจ์–ด์งˆ ๋•Œ๋„ ํŠธ๋ฆฌ์˜ ๊ท ํ˜•์ด ์ž๋™์œผ๋กœ ์œ ์ง€๋œ๋‹ค. ๋ ˆ๋“œ-๋ธ”๋ž™ ํŠธ๋ฆฌ, AVL ํŠธ๋ฆฌ ๋“ฑ์ด ์—ฌ๊ธฐ์— ์†ํ•œ๋‹ค.

7. ํž™(Heap)

์šฐ์„ ์ˆœ์œ„ ํ๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๋Š” ํŠธ๋ฆฌ๋กœ, ๊ฐ ๋ถ€๋ชจ ๋…ธ๋“œ๊ฐ€ ์ž์‹ ๋…ธ๋“œ๋ณด๋‹ค ํฌ๊ฑฐ๋‚˜(์ตœ๋Œ€ ํž™) ๋˜๋Š” ์ž‘๊ฑฐ๋‚˜(์ตœ์†Œ ํž™) ํ•˜๋Š” ํŠน์„ฑ์„ ๊ฐ€์ง€๋Š” ์™„์ „ ์ด์ง„ ํŠธ๋ฆฌ์ด๋‹ค.

8. ํŠธ๋ผ์ด(Trie)

๋ฌธ์ž์—ด์ด๋‚˜ ํ‚ค(key)๋ฅผ ์ €์žฅํ•˜๊ณ  ๋น ๋ฅด๊ฒŒ ๊ฒ€์ƒ‰ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๋Š” ํŠธ๋ฆฌ์ด๋‹ค. ์ฃผ๋กœ ํ…์ŠคํŠธ ๊ฒ€์ƒ‰ ์—”์ง„์ด๋‚˜ ์‚ฌ์ „ ๊ตฌํ˜„์— ์‚ฌ์šฉ๋œ๋‹ค.

ํŠธ๋ฆฌ ์ˆœํšŒ Tree Traversal

ํŠธ๋ฆฌ์—์„œ ๋ชจ๋“  ๋…ธ๋“œ๋ฅผ ๋ฐฉ๋ฌธํ•˜๋Š” ์ˆœ์„œ๋ฅผ ํŠธ๋ฆฌ ์ˆœํšŒ๋ผ๊ณ  ํ•œ๋‹ค. ์ˆœํšŒ ๋ฐฉ์‹์— ๋”ฐ๋ผ ํŠธ๋ฆฌ์˜ ๋…ธ๋“œ๋ฅผ ์ฐจ๋ก€๋กœ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค.

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

  • ๋ฃจํŠธ ๋…ธ๋“œ๋ฅผ ๋จผ์ € ๋ฐฉ๋ฌธํ•œ ํ›„, ์™ผ์ชฝ ์„œ๋ธŒํŠธ๋ฆฌ, ์˜ค๋ฅธ์ชฝ ์„œ๋ธŒํŠธ๋ฆฌ ์ˆœ์„œ๋กœ ๋ฐฉ๋ฌธํ•œ๋‹ค.
  • ์ˆœ์„œ: ๋ฃจํŠธ → ์™ผ์ชฝ ์ž์‹ → ์˜ค๋ฅธ์ชฝ ์ž์‹.

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

  • ์™ผ์ชฝ ์„œ๋ธŒํŠธ๋ฆฌ๋ฅผ ๋จผ์ € ๋ฐฉ๋ฌธํ•œ ํ›„, ๋ฃจํŠธ ๋…ธ๋“œ, ์˜ค๋ฅธ์ชฝ ์„œ๋ธŒํŠธ๋ฆฌ ์ˆœ์„œ๋กœ ๋ฐฉ๋ฌธํ•œ๋‹ค.
  • ์ˆœ์„œ: ์™ผ์ชฝ ์ž์‹ → ๋ฃจํŠธ → ์˜ค๋ฅธ์ชฝ ์ž์‹.
  • ์ด์ง„ ํƒ์ƒ‰ ํŠธ๋ฆฌ์—์„œ ์ค‘์œ„ ์ˆœํšŒ๋ฅผ ํ•˜๋ฉด ์ •๋ ฌ๋œ ์ˆœ์„œ์˜ ๊ฐ’์„ ์–ป์„ ์ˆ˜ ์žˆ๋‹ค.

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

  • ์™ผ์ชฝ ์„œ๋ธŒํŠธ๋ฆฌ, ์˜ค๋ฅธ์ชฝ ์„œ๋ธŒํŠธ๋ฆฌ๋ฅผ ๋จผ์ € ๋ฐฉ๋ฌธํ•œ ํ›„ ๋ฃจํŠธ ๋…ธ๋“œ๋ฅผ ๋ฐฉ๋ฌธํ•œ๋‹ค.
  • ์ˆœ์„œ: ์™ผ์ชฝ ์ž์‹ → ์˜ค๋ฅธ์ชฝ ์ž์‹ → ๋ฃจํŠธ.

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

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

 

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

1. ํŒŒ์ผ ์‹œ์Šคํ…œ

์šด์˜ ์ฒด์ œ์˜ ํŒŒ์ผ ์‹œ์Šคํ…œ์—์„œ ํŒŒ์ผ๊ณผ ๋””๋ ‰ํ† ๋ฆฌ๋Š” ํŠธ๋ฆฌ ๊ตฌ์กฐ๋กœ ์ €์žฅ๋œ๋‹ค. ์ตœ์ƒ์œ„์— ๋ฃจํŠธ ๋””๋ ‰ํ† ๋ฆฌ๊ฐ€ ์žˆ๊ณ , ๊ทธ ์•„๋ž˜์— ์ž์‹ ๋””๋ ‰ํ† ๋ฆฌ์™€ ํŒŒ์ผ์ด ๊ณ„์ธต์ ์œผ๋กœ ์ €์žฅ๋œ๋‹ค.

2. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ธ๋ฑ์Šค

ํŠธ๋ฆฌ๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ์ธ๋ฑ์Šค๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋œ๋‹ค. ํŠนํžˆ B-ํŠธ๋ฆฌ, B+ ํŠธ๋ฆฌ์™€ ๊ฐ™์€ ๊ตฌ์กฐ๋Š” ๋Œ€์šฉ๋Ÿ‰ ๋ฐ์ดํ„ฐ๋ฅผ ํšจ์œจ์ ์œผ๋กœ ๊ฒ€์ƒ‰ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋œ๋‹ค.

3. ์ด์ง„ ํƒ์ƒ‰

์ด์ง„ ํƒ์ƒ‰ ํŠธ๋ฆฌ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ •๋ ฌ๋œ ์ƒํƒœ๋กœ ์ €์žฅํ•˜๊ณ , ํƒ์ƒ‰์„ ๋น ๋ฅด๊ฒŒ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•œ๋‹ค.

4. ์ปดํŒŒ์ผ๋Ÿฌ

์ปดํŒŒ์ผ๋Ÿฌ๋Š” ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ๋ถ„์„ํ•˜์—ฌ ๊ตฌ๋ฌธ ํŠธ๋ฆฌ(Syntax Tree)๋˜๋Š” ์ถ”์ƒ ๊ตฌ๋ฌธ ํŠธ๋ฆฌ(AST, Abstract Syntax Tree)๋ฅผ ์ƒ์„ฑํ•˜๊ณ , ์ด๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์ฝ”๋“œ์˜ ๊ตฌ๋ฌธ ๋ถ„์„๊ณผ ์ตœ์ ํ™”๋ฅผ ์ˆ˜ํ–‰ํ•œ๋‹ค.

 

๊ฒฐ๋ก 

ํŠธ๋ฆฌ๋Š” ๋‹ค์–‘ํ•œ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ๊ณ„์ธต์  ๊ตฌ์กฐ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉฐ, ๋ฐ์ดํ„ฐ์˜ ํšจ์œจ์ ์ธ ํƒ์ƒ‰๊ณผ ์ฒ˜๋ฆฌ๋ฅผ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•œ๋‹ค. ํŠนํžˆ ์ด์ง„ ํƒ์ƒ‰ ํŠธ๋ฆฌ, ๊ท ํ˜• ํŠธ๋ฆฌ, ํž™๊ณผ ๊ฐ™์€ ๋‹ค์–‘ํ•œ ํŠธ๋ฆฌ ๊ตฌ์กฐ๋Š” ๊ฐ๊ฐ์˜ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐ ํŠนํ™”๋˜์–ด ์žˆ๋‹ค. ํŠธ๋ฆฌ๋Š” ํ˜„๋Œ€์˜ ๋งŽ์€ ์†Œํ”„ํŠธ์›จ์–ด ์‹œ์Šคํ…œ์—์„œ ์ค‘์š”ํ•œ ์ž๋ฃŒ ๊ตฌ์กฐ๋กœ ์‚ฌ์šฉ๋œ๋‹ค.