• ABOUT
  • POSTS
  • GUESTBOOK

ยฉ 2025 BlueCool12 All rights reserved.

2026.01.24์ž๋ฃŒ๊ตฌ์กฐ

๐ŸŒณ ๋น„์„ ํ˜• ์ž๋ฃŒ๊ตฌ์กฐ์˜ ํ•ต์‹ฌ - ํŠธ๋ฆฌ(Tree) ๊ตฌ์กฐ ์™„์ „ ์ •๋ณต

๋ฐฐ์—ด, ์Šคํƒ, ํ ๊ฐ™์€ ์ž๋ฃŒ๊ตฌ์กฐ๊ฐ€ ๋ฐ์ดํ„ฐ๋ฅผ ์ผ๋ ฌ๋กœ ์„ธ์šด ์„ ํ˜• ๊ตฌ์กฐ์˜€๋‹ค๋ฉด ์˜ค๋Š˜ ๋‹ค๋ฃฐ ํŠธ๋ฆฌ(Tree)๋Š” ์กฐ๊ธˆ ๋‹ค๋ฅด๋‹ค.

๋ฐ์ดํ„ฐ๋ฅผ ๊ณ„์ธต์ ์œผ๋กœ ์Œ“์•„ ์˜ฌ๋ฆฌ๋Š” ๋น„์„ ํ˜• ๊ตฌ์กฐ๋ผ ์ฒ˜์Œ ์ ‘ํ•˜๋ฉด ๋‹ค์†Œ ๋‚ฏ์„ค๊ฒŒ ๋А๊ปด์งˆ ์ˆ˜ ์žˆ์ง€๋งŒ ์‚ฌ์‹ค ํŠธ๋ฆฌ๋Š” ์šฐ๋ฆฌ๊ฐ€ ๋งค์ผ ์‚ฌ์šฉํ•˜๋Š” ํŒŒ์ผ ์‹œ์Šคํ…œ, ์›น ํŽ˜์ด์ง€์˜ HTML DOM, ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ธ๋ฑ์Šค ๋“ฑ์— ์ด๋ฏธ ๊นŠ์ˆ™์ด ์ž๋ฆฌ ์žก๊ณ  ์žˆ๋‹ค.


ํŠธ๋ฆฌ(Tree)๋ž€?

ํŠธ๋ฆฌ๋Š” *๋…ธ๋“œ(Node)๋“ค์ด ๋ถ€๋ชจ-์ž์‹ ๊ด€๊ณ„๋กœ ์—ฐ๊ฒฐ๋œ ์ž๋ฃŒ๊ตฌ์กฐ๋ฅผ ์˜๋ฏธํ•œ๋‹ค. ํ•˜๋‚˜์˜ ์ตœ์ƒ์œ„ ๋…ธ๋“œ์—์„œ ์‹œ์ž‘ํ•ด ์•„๋ž˜๋กœ ๊ฐ€์ง€๊ฐ€ ๋ป—์–ด๋‚˜๊ฐ€๋Š” ํ˜•ํƒœ๋ฅผ ๊ฐ€์ง„๋‹ค.

์ด๋Ÿฐ ๊ตฌ์กฐ ๋•๋ถ„์— ํŠธ๋ฆฌ๋Š” ๋‹จ์ˆœํžˆ ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ด๋Š” ๊ทธ๋ฆ‡์„ ๋„˜์–ด ๊ณ„์ธต์„ ํ‘œํ˜„ํ•˜๊ฑฐ๋‚˜ ๋ฒ”์œ„๋ฅผ ๋‚˜๋ˆ„์–ด ํƒ์ƒ‰ํ•  ๋•Œ ๊ฐ•์ ์„ ๊ฐ€์ง€๊ฒŒ ๋œ๋‹ค.

ํŠธ๋ฆฌ๋ฅผ ์ดํ•ดํ•˜๊ธฐ ์œ„ํ•ด ํ•„์š”ํ•œ ์šฉ์–ด๋ถ€ํ„ฐ ์ •๋ฆฌํ•ด๋ณด์ž.

  • *๋…ธ๋“œ(Node) - ํŠธ๋ฆฌ๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ํ•˜๋‚˜์˜ ๋ฐ์ดํ„ฐ ๋‹จ์œ„
  • ๋ฃจํŠธ(Root) - ํŠธ๋ฆฌ์˜ ์‹œ์ž‘์ , ๊ฐ€์žฅ ์œ„์— ์žˆ๋Š” ๋…ธ๋“œ
  • ๋ถ€๋ชจ/์ž์‹(Parent/Child) - ์—ฐ๊ฒฐ๋œ ๋…ธ๋“œ๋“ค ์‚ฌ์ด์˜ ์ƒํ•˜ ๊ด€๊ณ„
  • ๋ฆฌํ”„ ๋…ธ๋“œ(Leaf) - ์ž์‹์ด ์—†๋Š”, ํŠธ๋ฆฌ์˜ ๋๋ถ€๋ถ„์— ์œ„์น˜ํ•œ ๋…ธ๋“œ
  • ๊ฐ„์„ (Edge) - ๋…ธ๋“œ์™€ ๋…ธ๋“œ๋ฅผ ์ž‡๋Š” ์„ 
  • ๋ ˆ๋ฒจ(Level) - ๋ฃจํŠธ ๋…ธ๋“œ(Level 0)๋ฅผ ์‹œ์ž‘์œผ๋กœ ์•„๋ž˜๋กœ ๋‚ด๋ ค๊ฐˆ์ˆ˜๋ก 1์”ฉ ์ฆ๊ฐ€ํ•˜๋Š” ์ธต์„ ์˜๋ฏธ
  • ์„œ๋ธŒ ํŠธ๋ฆฌ(Subtree) - ์ „์ฒด ํŠธ๋ฆฌ์˜ ์ผ๋ถ€๋ถ„์„ ๋–ผ์–ด๋‚ธ ์ž‘์€ ํŠธ๋ฆฌ ๊ตฌ์กฐ, ๋ชจ๋“  ํŠธ๋ฆฌ๋Š” ๋˜ ๋‹ค๋ฅธ ์„œ๋ธŒ ํŠธ๋ฆฌ์˜ ์ง‘ํ•ฉ์ด๋ผ๊ณ  ๋ณผ ์ˆ˜ ์žˆ๋‹ค.


ํŠธ๋ฆฌ์˜ 3๊ฐ€์ง€ ํ•ต์‹ฌ ํŠน์ง•

ํŠธ๋ฆฌ๊ฐ€ ๋‹ค๋ฅธ ์ž๋ฃŒ๊ตฌ์กฐ์™€ ๊ตฌ๋ณ„๋˜๋Š” ๋ช…ํ™•ํ•œ ์„ฑ์งˆ๋“ค์„ ์ •๋ฆฌํ•ด ๋ณด์ž.

1. ์‚ฌ์ดํด(Cycle)์ด ์—†๋Š” ์—ฐ๊ฒฐ ๊ทธ๋ž˜ํ”„
ํŠธ๋ฆฌ์˜ ๊ฐ€์žฅ ํฐ ๊ทœ์น™์€ ์–ด๋–ค ๋…ธ๋“œ์—์„œ ์ถœ๋ฐœํ•ด๋„ ๋‹ค์‹œ ์ž๊ธฐ ์ž์‹ ์œผ๋กœ ๋Œ์•„์˜ค๋Š” ๊ฒฝ๋กœ๊ฐ€ ์—†๋‹ค๋Š” ์ ์ด๋‹ค. ๋ชจ๋“  ๋…ธ๋“œ๋Š” ๋‹จ๋ฐฉํ–ฅ ํ˜น์€ ๊ณ„์ธต์ ์œผ๋กœ๋งŒ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ์–ด ํ๋ฆ„์ด ๋ช…ํ™•ํ•˜๋‹ค.

2. ๋…ธ๋“œ์™€ ๊ฐ„์„ ์˜ ๊ด€๊ณ„
ํŠธ๋ฆฌ ๋‚ด์˜ ๋…ธ๋“œ ๊ฐœ์ˆ˜๊ฐ€ N๊ฐœ๋ผ๋ฉด ๋…ธ๋“œ๋“ค์„ ์ž‡๋Š” ๊ฐ„์„ ์˜ ๊ฐœ์ˆ˜๋Š” ํ•ญ์ƒ N - 1๊ฐœ์ด๋‹ค. ๋ชจ๋“  ์ž์‹ ๋…ธ๋“œ๋Š” ๋ฐ˜๋“œ์‹œ ํ•˜๋‚˜์˜ ๋ถ€๋ชจ ๋…ธ๋“œ์™€ ์—ฐ๊ฒฐ๋˜์–ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ฃจํŠธ ๋…ธ๋“œ๋ฅผ ์ œ์™ธํ•œ ๋‚˜๋จธ์ง€ ๋…ธ๋“œ ์ˆ˜๋งŒํผ ๊ฐ„์„ ์ด ์กด์žฌํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

3. ๋‹จ๋ฐฉํ–ฅ ๊ณ„์ธต ๊ตฌ์กฐ
๋ชจ๋“  ํŠธ๋ฆฌ๋Š” ๋‹จ ํ•˜๋‚˜์˜ ๋ฟŒ๋ฆฌ(Root)์—์„œ ์‹œ์ž‘ํ•˜๋ฉฐ ๋ถ€๋ชจ ๋…ธ๋“œ๋Š” ํ•˜๋‚˜์ง€๋งŒ ์ž์‹ ๋…ธ๋“œ๋Š” ์—ฌ๋Ÿฌ ๊ฐœ๊ฐ€ ์กด์žฌํ•  ์ˆ˜ ์žˆ๋‹ค. (๋ฐ˜๋Œ€๋กœ ์ž์‹ ์ž…์žฅ์—์„œ ๋ถ€๋ชจ๋Š” ์˜ค์ง ํ•˜๋‚˜)

์ด๋Ÿฐ ํŠน์ง•๋“ค ๋•๋ถ„์— ํŠธ๋ฆฌ๋Š” ๊ตฌ์กฐ๊ฐ€ ๋ช…ํ™•ํ•˜๊ณ  ํƒ์ƒ‰ ๊ฒฝ๋กœ๊ฐ€ ์˜ˆ์ธก ๊ฐ€๋Šฅํ•ด์ง„๋‹ค. ๋ฐ์ดํ„ฐ ์‚ฌ์ด์˜ ์ถฉ๋Œ ๊ฑฑ์ • ์—†์ด ํŠน์ • ๋ฐ์ดํ„ฐ๋ฅผ ํ–ฅํ•ด ์ตœ๋‹จ ๊ฒฝ๋กœ๋กœ ๋‚ด๋ ค๊ฐˆ ์ˆ˜ ์žˆ๋‹ค.


์ด์ง„ ํŠธ๋ฆฌ(Binary Tree)

ํŠธ๋ฆฌ ๊ตฌ์กฐ ์ค‘ ์‹ค๋ฌด์—์„œ ๊ฐ€์žฅ ๋นˆ๋ฒˆํ•˜๊ฒŒ ์‚ฌ์šฉ๋˜๊ณ  ์•Œ๊ณ ๋ฆฌ์ฆ˜ ํ…Œ์ŠคํŠธ์—์„œ๋„ ์ž์ฃผ ๋“ฑ์žฅํ•˜๋Š” ํ˜•ํƒœ๊ฐ€ ๋ฐ”๋กœ ์ด์ง„ ํŠธ๋ฆฌ์ด๋‹ค.

์ด์ง„ ํŠธ๋ฆฌ๋Š” ๋ชจ๋“  ๋…ธ๋“œ๊ฐ€ ์ตœ๋Œ€ ๋‘ ๊ฐœ์˜ ์ž์‹ ๋…ธ๋“œ๋งŒ์„ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋Š” ํŠธ๋ฆฌ๋ฅผ ์˜๋ฏธํ•œ๋‹ค. ์ž์‹ ๋…ธ๋“œ๋Š” ๋ณดํ†ต ์™ผ์ชฝ ์ž์‹(Left Child)๊ณผ ์˜ค๋ฅธ์ชฝ ์ž์‹(Right Child)์œผ๋กœ ๊ตฌ๋ถ„ํ•œ๋‹ค.

์™œ ์ž์‹ ์ˆ˜๋ฅผ 2๊ฐœ๋กœ ์ œํ•œํ• ๊นŒ?
์ž์‹์˜ ์ˆ˜๋ฅผ ์ œํ•œํ•˜๋ฉด ๊ตฌ์กฐ๊ฐ€ ๋‹จ์ˆœํ•ด์ ธ์„œ ๋ฐฐ์—ด์ด๋‚˜ ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ๋กœ ๊ตฌํ˜„ํ•˜๊ธฐ๊ฐ€ ๋งค์šฐ ์‰ฌ์›Œ์ง„๋‹ค. ๋˜ํ•œ '์ด์ง„ ํƒ์ƒ‰ ํŠธ๋ฆฌ' ์ฒ˜๋Ÿผ ๋ฐ์ดํ„ฐ๋ฅผ ํŠน์ • ๊ทœ์น™์— ๋”ฐ๋ผ ๋ฐฐ์น˜ํ•  ์ˆ˜ ์žˆ์–ด ํƒ์ƒ‰ ์†๋„๋ฅผ ๊ทน๋Œ€ํ™” ํ•  ์ˆ˜ ์žˆ๋‹ค.

์ด์ง„ ํŠธ๋ฆฌ๋Š” ๊ทธ ํ˜•ํƒœ์— ๋”ฐ๋ผ ํฌ๊ฒŒ ์„ธ ๊ฐ€์ง€๋กœ ๋‚˜๋‰œ๋‹ค.

  • ์ • ์ด์ง„ ํŠธ๋ฆฌ (Full Binary Tree) - ๋ชจ๋“  ๋…ธ๋“œ๊ฐ€ 0๊ฐœ ๋˜๋Š” 2๊ฐœ์˜ ์ž์‹ ๋…ธ๋“œ๋ฅผ ๊ฐ–๋Š” ๊ตฌ์กฐ
  • ์™„์ „ ์ด์ง„ ํŠธ๋ฆฌ (Complete Binary Tree) - ๋งˆ์ง€๋ง‰ ๋ ˆ๋ฒจ์„ ์ œ์™ธํ•˜๊ณ  ๋ชจ๋“  ๋…ธ๋“œ๊ฐ€ ์ฑ„์›Œ์ ธ ์žˆ์œผ๋ฉฐ ๋…ธ๋“œ๊ฐ€ ์™ผ์ชฝ๋ถ€ํ„ฐ ์ˆœ์„œ๋Œ€๋กœ ์ฑ„์›Œ์ง„ ๊ตฌ์กฐ
  • ํฌํ™” ์ด์ง„ ํŠธ๋ฆฌ (Perfect Binary Tree) - ๋ชจ๋“  ๋ ˆ๋ฒจ์ด ๋นˆ ๊ณต๊ฐ„ ์—†์ด ๊ฝ‰ ์ฑ„์›Œ์ง„ ์™„๋ฒฝํ•œ ์‚ผ๊ฐํ˜• ํ˜•ํƒœ


์ด์ง„ ํŠธ๋ฆฌ ๊ตฌํ˜„ (TypeScript)
์‹ค์ œ ์ฝ”๋“œ๋กœ ๋…ธ๋“œ๋ฅผ ์ •์˜ํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๊ฐ„๋‹จํ•˜๊ฒŒ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค.

class TreeNode {
value: number;
left: TreeNode | null;
right: TreeNode | null;

constructor(value: number) {
this.value = value;
this.left = null; // ์™ผ์ชฝ ์ž์‹
this.right = null; // ์˜ค๋ฅธ์ชฝ ์ž์‹
}
}


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

์„ ํ˜• ์ž๋ฃŒ๊ตฌ์กฐ์™€ ๋‹ฌ๋ฆฌ ํŠธ๋ฆฌ๋Š” ๋น„์„ ํ˜• ๊ตฌ์กฐ์ด๊ธฐ ๋•Œ๋ฌธ์— ๋ชจ๋“  ๋…ธ๋“œ๋ฅผ ์–ด๋–ค ์ˆœ์„œ๋กœ ๋ฐฉ๋ฌธํ•  ๊ฒƒ์ธ๊ฐ€๊ฐ€ ๋งค์šฐ ์ค‘์š”ํ•˜๋‹ค. ํฌ๊ฒŒ ๊นŠ์ด ์šฐ์„  ํƒ์ƒ‰(DFS)๊ณผ ๋„ˆ๋น„ ์šฐ์„  ํƒ์ƒ‰(BFS)์œผ๋กœ ๋‚˜๋‰œ๋‹ค.

1. ๊นŠ์ด ์šฐ์„  ํƒ์ƒ‰ (DFS, Depth-First Search)
ํ•œ ๋ฐฉํ–ฅ์œผ๋กœ ์ตœ๋Œ€ํ•œ ๊นŠ์ˆ™์ด ๋‚ด๋ ค๊ฐ”๋‹ค๊ฐ€ ๋” ์ด์ƒ ๊ฐˆ ๊ณณ์ด ์—†์œผ๋ฉด ๋‹ค์‹œ ๋Œ์•„์™€ ๋‹ค๋ฅธ ๋ฐฉํ–ฅ์œผ๋กœ ํƒ์ƒ‰ํ•˜๋Š” ๋ฐฉ์‹์ด๋‹ค. ์ฃผ๋กœ ์žฌ๊ท€(Recursion)๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ตฌํ˜„ํ•œ๋‹ค.

  • ์ „์œ„ ์ˆœํšŒ(Pre-order): ์ž์‹ (Root) -> ์™ผ์ชฝ -> ์˜ค๋ฅธ์ชฝ
    ํŠธ๋ฆฌ๋ฅผ ๋ณต์‚ฌํ•˜๊ฑฐ๋‚˜ ์ „์œ„ ํ‘œ๊ธฐ๋ฒ• ์—ฐ์‚ฐ ๋“ฑ์— ์‚ฌ์šฉ๋œ๋‹ค.
  • ์ค‘์œ„ ์ˆœํšŒ(In-order): ์™ผ์ชฝ -> ์ž์‹ (Root) -> ์˜ค๋ฅธ์ชฝ
    ์ด์ง„ ํƒ์ƒ‰ ํŠธ๋ฆฌ(BST)์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌ๋œ ์ƒํƒœ๋กœ ๊ฐ€์ ธ์˜ฌ ๋•Œ ์‚ฌ์šฉ๋œ๋‹ค.
  • ํ›„์œ„ ์ˆœํšŒ(Post-order): ์™ผ์ชฝ -> ์˜ค๋ฅธ์ชฝ -> ์ž์‹ (Root)
    ์ž์‹ ๋…ธ๋“œ๋ถ€ํ„ฐ ์ฒ˜๋ฆฌํ•ด์•ผ ํ•˜๋Š” ํŠธ๋ฆฌ ์‚ญ์ œ๋‚˜ ์ˆ˜์‹ ํŠธ๋ฆฌ(Expression Tree)์˜ ๊ณ„์‚ฐ์— ํ™œ์šฉ๋œ๋‹ค.

2. ๋„ˆ๋น„ ์šฐ์„  ํƒ์ƒ‰ (BFS, Breadth-First Search)
๊นŠ๊ฒŒ ๋‚ด๋ ค๊ฐ€๊ธฐ๋ณด๋‹ค ์ธ์ ‘ํ•œ ๋…ธ๋“œ(๊ฐ™์€ ๋ ˆ๋ฒจ)๋“ค์„ ๋จผ์ € ๋ฐฉ๋ฌธํ•˜๋Š” ๋ฐฉ์‹์ด๋‹ค. ์ฃผ๋กœ ํ(Queue) ์ž๋ฃŒ๊ตฌ์กฐ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ตฌํ˜„ํ•œ๋‹ค.

  • ๋ ˆ๋ฒจ ์ˆœํšŒ(Level-order): ์œ„์—์„œ ์•„๋ž˜๋กœ, ์™ผ์ชฝ์—์„œ ์˜ค๋ฅธ์ชฝ์œผ๋กœ ์ธต๋ณ„๋กœ ํƒ์ƒ‰
    ๋‘ ๋…ธ๋“œ ์‚ฌ์ด์˜ ์ตœ๋‹จ ๊ฑฐ๋ฆฌ๋ฅผ ์ฐพ๊ฑฐ๋‚˜ ๊ณ„์ธต ๊ตฌ์กฐ๋ฅผ ์ˆœ์ฐจ์ ์œผ๋กœ ํ™•์ธํ•ด์•ผ ํ•  ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค.


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

ํŠธ๋ฆฌ ์ž๋ฃŒ๊ตฌ์กฐ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฐ€์žฅ ํฐ ์ด์œ ๋Š” ๊ฒฐ๊ตญ ํšจ์œจ์ ์ธ ํƒ์ƒ‰์ด๋‹ค. ํ•˜์ง€๋งŒ ๋ชจ๋“  ํŠธ๋ฆฌ๊ฐ€ ํ•ญ์ƒ ๋น ๋ฅธ ๊ฒƒ์€ ์•„๋‹ˆ๋‹ค.

1. ์ผ๋ฐ˜์ ์ธ ํŠธ๋ฆฌ์˜ ํƒ์ƒ‰: O(n)
๊ทœ์น™ ์—†์ด ๋ฐ์ดํ„ฐ๊ฐ€ ๋“ค์–ด๊ฐ„ ์ผ๋ฐ˜์ ์ธ ํŠธ๋ฆฌ์—์„œ ํŠน์ • ๊ฐ’์„ ์ฐพ์œผ๋ ค๋ฉด ์ตœ์•…์˜ ๊ฒฝ์šฐ ๋ชจ๋“  ๋…ธ๋“œ๋ฅผ ๋‹ค ์ฐพ์•„์•ผ ํ•œ๋‹ค. ์ด๋•Œ์˜ ์‹œ๊ฐ„ ๋ณต์žก๋„๋Š” ๋ฐฐ์—ด๊ณผ ๋‹ค๋ฅผ ๋ฐ” ์—†๋Š” O(n)์ด ๋œ๋‹ค.

2. ์ด์ง„ ํƒ์ƒ‰ ํŠธ๋ฆฌ(BST)์˜ ํƒ์ƒ‰: O(log n)
๋ฐ์ดํ„ฐ๋ฅผ ์‚ฝ์ž…ํ•  ๋•Œ๋ถ€ํ„ฐ ๋ถ€๋ชจ๋ณด๋‹ค ์ž‘์œผ๋ฉด ์™ผ์ชฝ, ํฌ๋ฉด ์˜ค๋ฅธ์ชฝ๊ณผ ๊ฐ™์€ ๊ทœ์น™์„ ์ง€ํ‚ค๋ฉด ์ด์•ผ๊ธฐ๊ฐ€ ๋‹ฌ๋ผ์ง„๋‹ค. ํƒ์ƒ‰์„ ํ•œ ๋ฒˆ ์ง„ํ–‰ํ•  ๋•Œ๋งˆ๋‹ค ํ™•์ธํ•ด์•ผ ํ•  ๋ฐ์ดํ„ฐ์˜ ์–‘์ด ์ ˆ๋ฐ˜์”ฉ ์ค„์–ด๋“ค๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ์ด๊ฒƒ์ด ์šฐ๋ฆฌ๊ฐ€ ํŠธ๋ฆฌ ๊ตฌ์กฐ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ถ๊ทน์ ์ธ ๋ชฉํ‘œ์ด๋‹ค.

3. ์ฃผ์˜ํ•  ์ : ํŽธํ–ฅ ํŠธ๋ฆฌ(Skewed Tree)
์•„๋ฌด๋ฆฌ ์ด์ง„ ํƒ์ƒ‰ ํŠธ๋ฆฌ๋ผ๋„ ๋ฐ์ดํ„ฐ๊ฐ€ ํ•œ์ชฝ ๋ฐฉํ–ฅ์œผ๋กœ๋งŒ ์น˜์šฐ์ณ์„œ ๋“ค์–ด์˜ค๋ฉด ๊ฒฐ๊ตญ ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ์™€ ๋‹ค๋ฅผ ๋ฐ” ์—†๋Š” ์„ ํ˜• ๊ตฌ์กฐ๊ฐ€ ๋œ๋‹ค. ๋”ฐ๋ผ์„œ ์‹ค์ œ ํ˜„์—…์ด๋‚˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ๋Š” ํŠธ๋ฆฌ๊ฐ€ ํ•œ์ชฝ์œผ๋กœ ์ ๋ฆฌ์ง€ ์•Š๋„๋ก ์Šค์Šค๋กœ ๊ท ํ˜•์„ ์žก๋Š” AVL ํŠธ๋ฆฌ๋‚˜ Red-Black ํŠธ๋ฆฌ, B-Tree ๊ฐ™์€ ์‹ฌํ™” ๊ตฌ์กฐ๋ฅผ ์ฃผ๋กœ ์‚ฌ์šฉํ•œ๋‹ค.


ํŠธ๋ฆฌ์˜ ํ™œ์šฉ ์˜ˆ์‹œ

ํŠธ๋ฆฌ๋Š” ํ˜„๋Œ€ ์ปดํ“จํŒ… ์‹œ์Šคํ…œ์˜ ๊ทผ๊ฐ„์„ ์ด๋ฃจ๊ณ  ์žˆ๋‹ค.

1. ํŒŒ์ผ ์‹œ์Šคํ…œ (File System)
์šฐ๋ฆฌ๊ฐ€ ๋งค์ผ ์‚ฌ์šฉํ•˜๋Š” ์œˆ๋„์šฐ์˜ ํŒŒ์ผ ํƒ์ƒ‰๊ธฐ๋‚˜ ๋งฅ์˜ Finder๊ฐ€ ๋ฐ”๋กœ ํŠธ๋ฆฌ ๊ตฌ์กฐ์˜ ๋Œ€ํ‘œ์ ์ธ ์˜ˆ์ด๋‹ค. C๋“œ๋ผ์ด๋ธŒ(Root) ์•„๋ž˜์— ์—ฌ๋Ÿฌ ํด๋”(Internal Node)๊ฐ€ ์žˆ๊ณ , ๊ทธ ์•ˆ์— ๋” ์ด์ƒ ์ชผ๊ฐœ์ง€์ง€ ์•Š๋Š” ํŒŒ์ผ(Leaf Node)๋“ค์ด ์กด์žฌํ•˜๋Š” ํ˜•ํƒœ์ด๋‹ค.

2. HTML DOM (Document Object Model)
์›น ๋ธŒ๋ผ์šฐ์ €๊ฐ€ HTML ๋ฌธ์„œ๋ฅผ ํ•ด์„ํ•  ๋•Œ๋„ ํŠธ๋ฆฌ ๊ตฌ์กฐ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. <html> ํƒœ๊ทธ๋ฅผ ๋ฃจํŠธ๋กœ ํ•˜์—ฌ <head>, <body> ๋“ฑ์˜ ์ž์‹ ๋…ธ๋“œ๊ฐ€ ๋ป—์–ด ๋‚˜๊ฐ€๋Š” ํ˜•ํƒœ์ด๋‹ค. ์šฐ๋ฆฌ๊ฐ€ JavaScript๋กœ ์š”์†Œ๋ฅผ ์ฐพ๊ณ  ์กฐ์ž‘ํ•  ์ˆ˜ ์žˆ๋Š” ์ด์œ ๋„ DOM์ด ํŠธ๋ฆฌ ๊ตฌ์กฐ๋กœ ์„ค๊ณ„๋˜์–ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

3. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ธ๋ฑ์Šค (B-Tree)
์ˆ˜๋ฐฑ๋งŒ ๊ฐœ์˜ ๋ฐ์ดํ„ฐ ์ค‘์—์„œ ์›ํ•˜๋Š” ์ •๋ณด๋ฅผ ์ˆœ์‹๊ฐ„์— ์ฐพ์•„๋‚ผ ์ˆ˜ ์žˆ๋Š” ๋น„๊ฒฐ์€ ๋ฐ”๋กœ B-Tree ๊ณ„์ธต ๊ตฌ์กฐ์— ์žˆ๋‹ค. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋Š” ํŠธ๋ฆฌ ๊ตฌ์กฐ๋ฅผ ํ™œ์šฉํ•ด ํƒ์ƒ‰ ๋ฒ”์œ„๋ฅผ ์ขํ˜€๋‚˜๊ฐ€๋ฉฐ ์„ฑ๋Šฅ์„ ์ตœ์ ํ™”ํ•œ๋‹ค.

์ด์ „ ๊ธ€
๐Ÿ“˜ TypeScript๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ 
๋‹ค์Œ ๊ธ€
๐Ÿ“ž ํ•œ ๋ˆˆ์— ์ •๋ฆฌํ•˜๋Š” JS ๋น„๋™๊ธฐ 3๋‹จ๊ณ„: Callback, Promise, Async/Await
์žฅ์‹์šฉ ๋กœ๊ณ