๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ“š Computer Science/Data Structure

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

by hyebin (Helia) 2023. 3. 9.
๋ฐ˜์‘ํ˜•

ํŠธ๋ฆฌ(Tree)

  • ๋…ธ๋“œ๋“ค์ด ๋‚˜๋ฌด ๊ฐ€์ง€์ฒ˜๋Ÿผ ์—ฐ๊ฒฐ๋œ ๋น„์„ ํ˜• ๊ณ„์ธต์  ์ž๋ฃŒ๊ตฌ์กฐ
  • ๊ณ„์ธต์ ์ธ ์ž๋ฃŒ๋ฅผ ํ‘œํ˜„ํ•˜๋Š”๋ฐ ์ด์šฉ
  • ๋…ธ๋“œ(node)๋“ค๊ณผ ๋…ธ๋“œ๋“ค์„ ์—ฐ๊ฒฐํ•˜๋Š” ๊ฐ„์„ (edge)๋“ค๋กœ ๊ตฌ์„ฑ
  • ํ•˜๋‚˜์˜ ๋ฃจํŠธ๋…ธ๋“œ๋ฅผ ๊ฐ€์ง

ํŠธ๋ฆฌ์™€ ๊ด€๋ จ๋œ ์šฉ์–ด

๋…ธ๋“œ(node)

  • ํŠธ๋ฆฌ๋ฅผ ๊ตฌ์„ฑํ•˜๊ณ  ์žˆ๋Š” ๊ธฐ๋ณธ์š”์†Œ
  • ๋…ธ๋“œ์—๋Š” ํ‚ค ๋˜๋Š” ๊ฐ’๊ณผ ํ•˜์œ„ ๋…ธ๋“œ์— ๋Œ€ํ•œ ํฌ์ธํ„ฐ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์Œ

๊ฐ„์„ (edge)

  • ๋…ธ๋“œ์™€ ๋…ธ๋“œ ๊ฐ„์˜ ์—ฐ๊ฒฐ์„  (link, branch๋ผ๊ณ ๋„ ๋ถ€๋ฆ„)

๋ฃจํŠธ ๋…ธ๋“œ(root node)

  • ๋ถ€๋ชจ๊ฐ€ ์—†๋Š” ์ตœ์ƒ์œ„ ๋…ธ๋“œ, ํŠธ๋ฆฌ๋Š” ํ•˜๋‚˜์˜ ๋ฃจํŠธ ๋…ธ๋“œ๋งŒ์„ ๊ฐ€์ง (A)

๋ถ€๋ชจ ๋…ธ๋“œ(parent node)

  • ์ž์‹  ๋…ธ๋“œ๋ฅผ ๊ฐ€์ง„ ๋…ธ๋“œ (H, I์˜ ๋ถ€๋ชจ ๋…ธ๋“œ๋Š” D)

์ž์‹ ๋…ธ๋“œ(child node)

  • ๋ถ€๋ชจ ๋…ธ๋“œ์˜ ํ•˜์œ„ ๋…ธ๋“œ (๋…ธ๋“œ D์˜ ์ž์‹ ๋…ธ๋“œ๋Š” H, I)

ํ˜•์ œ ๋…ธ๋“œ(sibling node)

  • ๊ฐ™์€ ๋ถ€๋ชจ๋ฅผ ๊ฐ€์ง€๋Š” ๋…ธ๋“œ (H, I๋Š” ๊ฐ™์€ ๋ถ€๋ชจ๋ฅผ ๊ฐ€์ง€๋Š” ํ˜•์žฌ ๋…ธ๋“œ)

์™ธ๋ถ€ ๋…ธ๋“œ(external node, outer node), ๋‹จ๋ง ๋…ธ๋“œ (terminal node), ๋ฆฌํ”„ ๋…ธ๋“œ(leaf node)

  • ์ž์‹์ด ์—†๋Š” ๋…ธ๋“œ (H, I, J, F, G)

๋‚ด๋ถ€ ๋…ธ๋“œ (internal node, inner node), ๋น„ ๋‹จ๋ง ๋…ธ๋“œ (non-terminal node), ๊ฐ€์ง€ ๋…ธ๋“œ (branch node)

  • ๋‹จ๋ง ๋…ธ๋“œ๊ฐ€ ์•„๋‹Œ ๋…ธ๋“œ, ์ž์‹ ๋…ธ๋“œ๋ฅผ ํ•˜๋‚˜ ์ด์ƒ ๊ฐ€์ง„ ๋…ธ๋“œ (A, B, C, D, E)

ํฌ๊ธฐ(size)

  • ์ž์‹ ์„ ํฌํ•จํ•œ ๋ชจ๋“  ์ž์‹ ๋…ธ๋“œ์˜ ๊ฐœ์ˆ˜
  • B์˜ ํฌ๊ธฐ: 6

๊นŠ์ด(depth)

  •  ๋ฃจํŠธ์—์„œ ์–ด๋–ค ๋…ธ๋“œ์— ๋„๋‹ฌํ•˜๊ธฐ ์œ„ํ•ด ๊ฑฐ์ณ์•ผ ํ•˜๋Š” ๊ฐ„์„ ์˜ ์ˆ˜
  • ๋ฃจํŠธ ๋…ธ๋“œ์˜ ๊นŠ์ด: 0, D์˜ ๊นŠ์ด: 2

๋†’์ด(height)

  • ์–ด๋–ค ๋…ธ๋“œ์—์„œ ๋ฆฌํ”„ ๋…ธ๋“œ๊นŒ์ง€ ๊ฐ€์žฅ ๊ธด ๊ฒฝ๋กœ์˜ ๊ฐ„์„ (Edge) ์ˆ˜
  • ๋ฆฌํ”„ ๋…ธ๋“œ์˜ ๋†’์ด : 0, A ๋…ธ๋“œ์˜ ๋†’์ด : 3

๋ ˆ๋ฒจ(level)

  • ๋ฃจํŠธ์—์„œ ์–ด๋–ค ๋…ธ๋“œ๊นŒ์ง€์˜ ๊ฐ„์„ (Edge) ์ˆ˜

์ฐจ์ˆ˜(degree)

  • ๋…ธ๋“œ์˜ ์ž์‹ ์ˆ˜
  • Leaf node์˜ degree : 0; A์˜ degree : 2

๊ฒฝ๋กœ(path)

  • ํ•œ ๋…ธ๋“œ์—์„œ ๋‹ค๋ฅธ ํ•œ ๋…ธ๋“œ์— ์ด๋ฅด๋Š” ๊ธธ ์‚ฌ์ด์— ๋†“์—ฌ์žˆ๋Š” ๋…ธ๋“œ๋“ค์˜ ์ˆœ์„œ
  • A & H ๊ฒฝ๋กœ : A-B-D-H

path length

  • ํ•ด๋‹น ๊ฒฝ๋กœ์— ์žˆ๋Š” ์ด๋…ธ๋“œ์˜ ์ˆ˜
  • A & H ๊ฒฝ๋กœ ๊ธธ์ด : 4

width

  • ๋ ˆ๋ฒจ์— ์žˆ๋Š” ๋…ธ๋“œ ์ˆ˜
  • Level 2 width : 4

breadth

  • ๋ฆฌํ”„ ๋…ธ๋“œ์˜ ์ˆ˜
  • Breadth : 5

distance

  • ๋‘ ๋…ธ๋“œ ์‚ฌ์ด์˜ ์ตœ๋‹จ ๊ฒฝ๋กœ์— ์žˆ๋Š” ๊ฐ„์„ (Edge)์˜ ์ˆ˜
  • D์™€ J์˜ Distance : 3

order

  • ๋ถ€๋ชจ ๋…ธ๋“œ๊ฐ€ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋Š” ์ตœ๋Œ€ ์ž์‹์˜ ์ˆ˜
  • Order 3 : ๋ถ€๋ชจ ๋…ธ๋“œ๋Š” ์ตœ๋Œ€ 3๋ช…์˜ ์ž์‹์„ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋‹ค.

์„œ๋ธŒ ํŠธ๋ฆฌ(sub tree)

  • ํŠธ๋ฆฌ ๋‚ด์˜ ํ•˜์œ„ ์ง‘ํ•ฉ (๋ถ€๋ถ„ ์ง‘ํ•ฉ)
  • D, H, I ๊ฐ€ ํ•˜๋‚˜์˜ ์„œ๋ธŒ ํŠธ๋ฆฌ

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

  • ๊ทธ๋ž˜ํ”„์˜ ํ•œ ์ข…๋ฅ˜์ด๋ฉฐ ‘์ตœ์†Œ ์—ฐ๊ฒฐ ํŠธ๋ฆฌ’๋ผ๊ณ ๋„ ๋ถˆ๋ฆผ
  • ํŠธ๋ฆฌ๋Š” DAG(Directed Acyclic Graphs, ๋ฐฉํ–ฅ์„ฑ์ด ์žˆ๋Š” ๋น„์ˆœํ™˜ ๊ทธ๋ž˜ํ”„)์˜ ํ•œ ์ข…๋ฅ˜
  • ๋‹จ์ˆœ ์ˆœํ™˜(Loop)์„ ๊ฐ–์ง€ ์•Š๊ณ , ์—ฐ๊ฒฐ๋œ ๋ฌด๋ฐฉํ–ฅ ๊ทธ๋ž˜ํ”„ ๊ตฌ์กฐ
  • ๋ฐ์ดํ„ฐ๋ฅผ ์ˆœ์ฐจ์ ์œผ๋กœ ์ €์žฅํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ๋น„์„ ํ˜• ์ž๋ฃŒ๊ตฌ์กฐ
  • ๋…ธ๋“œ๊ฐ€ N๊ฐœ์ธ ํŠธ๋ฆฌ๋Š” ํ•ญ์ƒ N-1๊ฐœ์˜ ๊ฐ„์„ (edge)์„ ๊ฐ€์ง
  • ๋…ธ๋“œ ๊ฐ„์— ๋ถ€๋ชจ ์ž์‹ ๊ด€๊ณ„๋ฅผ ๊ฐ–๊ณ  ์žˆ๋Š” ๊ณ„์ธตํ˜• ์ž๋ฃŒ๊ตฌ์กฐ์ด๋ฉฐ ๋ชจ๋“  ์ž์‹ ๋…ธ๋“œ๋Š” ํ•˜๋‚˜์˜ ๋ถ€๋ชจ ๋…ธ๋“œ๋งŒ ๊ฐ€์ง
  • ๋ถ€๋ชจ-์ž์‹ ๊ด€๊ณ„์ด๋ฏ€๋กœ ํ๋ฆ„์€ top-bottom ์•„๋‹ˆ๋ฉด bottom-top์œผ๋กœ ์ด๋ฃจ์–ด์ง
  • ์ˆœํšŒ๋Š” Pre-order, In-order ์•„๋‹ˆ๋ฉด Post-order๋กœ ์ด๋ฃจ์–ด์ง
    • ์ „์œ„ ์ˆœํšŒ(Pre-order traverse): ๋ฃจํŠธ -> ์™ผ์ชฝ ์ž์‹ ๋…ธ๋“œ -> ์˜ค๋ฅธ์ชฝ ์ž์‹ ๋…ธ๋“œ ์ˆœ์„œ๋กœ ๋ฐฉ๋ฌธํ•˜๋Š” ์ˆœํšŒ ๋ฐฉ๋ฒ•
    • ์ค‘์œ„ ์ˆœํšŒ(In-order traverse): ์™ผ์ชฝ ์ž์‹ ๋…ธ๋“œ -> ๋ฃจํŠธ -> ์˜ค๋ฅธ์ชฝ ์ž์‹ ๋…ธ๋“œ ์ˆœ์„œ๋กœ ๋ฐฉ๋ฌธํ•˜๋Š” ์ˆœํšŒ ๋ฐฉ๋ฒ•
    • ํ›„์œ„ ์ˆœํšŒ(Pre-order traverse): ์™ผ์ชฝ ์ž์‹ ๋…ธ๋“œ -> ์˜ค๋ฅธ์ชฝ ์ž์‹ ๋…ธ๋“œ -> ๋ฃจํŠธ ์ˆœ์„œ๋กœ ๋ฐฉ๋ฌธํ•˜๋Š” ์ˆœํšŒ ๋ฐฉ๋ฒ•

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

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

  • ๋ชจ๋“  ๋…ธ๋“œ๊ฐ€ ์ž์‹์˜ ๋…ธ๋“œ ์ˆ˜๊ฐ€ 2๊ฐœ ์ดํ•˜์ธ ํŠธ๋ฆฌ
    • ์ •์ด์ง„ ํŠธ๋ฆฌ(full binary tree): ์ž์‹ ๋…ธ๋“œ๊ฐ€ 0 ๋˜๋Š” ๋‘ ๊ฐœ์ธ ์ด์ง„ ํŠธ๋ฆฌ
    • ์™„์ „ ์ด์ง„ ํŠธ๋ฆฌ(complete binary tree): ์™ผ์ชฝ์—์„œ๋ถ€ํ„ฐ ์ฑ„์›Œ์ ธ ์žˆ๋Š” ์ด์ง„ ํŠธ๋ฆฌ, ๋งˆ์ง€๋ง‰ ๋ ˆ๋ฒจ์„ ์ œ์™ธํ•œ ๋ชจ๋“  ๋ ˆ๋ฒจ์ด ์™„์ „ํžˆ ์ฑ„์›Œ์ง, ๋งˆ์ง€๋ง‰ ๋ ˆ๋ฒจ์˜ ๊ฒฝ์šฐ ์™ผ์ชฝ๋ถ€ํ„ฐ ์ฑ„์›Œ์ง
    • ๋ณ€์งˆ ์ด์ง„ ํŠธ๋ฆฌ(degenerate binary tree): ์ž์‹ ๋…ธ๋“œ๊ฐ€ ํ•˜๋‚˜๋ฐ–์— ์—†๋Š” ์ด์ง„ ํŠธ๋ฆฌ
    • ํฌํ™” ์ด์ง„ ํŠธ๋ฆฌ(perfect binary tree): ๋ชจ๋“  ๋…ธ๋“œ๊ฐ€ ๊ฝ‰ ์ฐจ์žˆ๋Š” ์ด์ง„ ํŠธ๋ฆฌ
    • ๊ท ํ˜• ์ด์ง„ ํŠธ๋ฆฌ(balanced binary tree): ์™ผ์ชฝ๊ณผ ์˜ค๋ฅธ์ชฝ ๋…ธ๋“œ์˜ ๋†’์ด ์ฐจ์ด๊ฐ€ 1 ์ดํ•˜์ธ ์ด์ง„ํŠธ๋ฆฌ

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

  • ์ˆœ์„œํ™”๋œ ์ด์ง„ ํŠธ๋ฆฌ
  • ๋…ธ๋“œ์˜ ์™ผ์ชฝ ์ž์‹์€ ๋ถ€๋ชจ์˜ ๊ฐ’๋ณด๋‹ค ์ž‘์€ ๊ฐ’์„ ๊ฐ€์ ธ์•ผ ํ•˜๋ฉฐ ๋…ธ๋“œ์˜ ์˜ค๋ฅธ์ชฝ ์ž์‹์€ ๋ถ€๋ชจ์˜ ๊ฐ’๋ณด๋‹ค ํฐ ๊ฐ’์„ ๊ฐ€์ ธ์•ผ ํ•จ
  • ๊ฒ€์ƒ‰์„ ํ•˜๊ธฐ์— ์šฉ์ด
  • ๋ณดํ†ต ์š”์†Œ๋ฅผ ์ฐพ์„ ๋•Œ O(logn), ์ตœ์•…์˜ ๊ฒฝ์šฐ O(n)
    • ์‚ฝ์ž… ์ˆœ์„œ์— ๋”ฐ๋ผ ์„ ํ˜•์ ์ผ ์ˆ˜ ์žˆ์Œ

AVL ํŠธ๋ฆฌ (Adelson-Velsky and Landis Tree)

  • ์ด์ง„ ํƒ์ƒ‰ ํŠธ๋ฆฌ์˜ ์ตœ์•…์˜ ๊ฒฝ์šฐ ์„ ํ˜•์ ์ธ ํŠธ๋ฆฌ๊ฐ€ ๋˜๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ํ•˜๊ณ  ์Šค์Šค๋กœ ๊ท ํ˜•์„ ์žก๋Š” ์ด์ง„ ํƒ์ƒ‰ ํŠธ๋ฆฌ
  • ๋‘ ์ž์‹ ์„œ๋ธŒํŠธ๋ฆฌ์˜ ๋†’์ด๋Š” ํ•ญ์ƒ ์ตœ๋Œ€ 1๋งŒํผ ์ฐจ์ด๊ฐ€ ๋‚จ
  • ํƒ์ƒ‰, ์‚ฝ์ž…, ์‚ญ์ œ ๋ชจ๋‘ ์‹œ๊ฐ„๋ณต์žก๋„๊ฐ€ O(logn)
  • ์‚ฝ์ž…, ์‚ญ์ œ๋ฅผ ํ•  ๋•Œ๋งˆ๋‹ค ๊ท ํ˜•์„ ๋งž์ถ”๊ธฐ ์œ„ํ•ด ํŠธ๋ฆฌ ์ผ๋ถ€๋ฅผ ์™ผ์ชฝ or ์˜ค๋ฅธ์ชฝ์œผ๋กœ ํšŒ์ „์‹œํ‚ค๋ฉฐ ๊ท ํ˜•์„ ์žก์Œ

๋ ˆ๋“œ ๋ธ”๋ž™ ํŠธ๋ฆฌ (Red-Black Tree)

  • ์ž๊ฐ€ ๊ท ํ˜• ์ด์ง„ ํƒ์ƒ‰ ํŠธ๋ฆฌ
  • ํƒ์ƒ‰, ์‚ฝ์ž…, ์‚ญ์ œ ๋ชจ๋‘ ์‹œ๊ฐ„๋ณต์žก๋„๊ฐ€ O(logn)
  • ๊ฐ ๋…ธ๋“œ๋Š” ๋นจ๊ฐ„์ƒ‰ ๋˜๋Š” ๊ฒ€์€์ƒ‰์˜ ์ƒ‰์ƒ์„ ๋‚˜ํƒ€๋‚ด๋Š” ์ถ”๊ฐ€ ๋น„ํŠธ๋ฅผ ์ €์žฅํ•˜์—ฌ ์‚ฝ์ž… ๋ฐ ์‚ญ์ œ ์ค‘์— ํŠธ๋ฆฌ๊ฐ€ ๊ท ํ˜•์„ ์œ ์ง€๋Š” ๋ฐ ์‚ฌ์šฉ
  • ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์กฐ๊ฑด์„ ๋งŒ์กฑ
    1.  ๋ชจ๋“  ๋…ธ๋“œ๋Š” ๋นจ๊ฐ„์ƒ‰ ํ˜น์€ ๊ฒ€์€์ƒ‰
    2. ๋ฃจํŠธ ๋…ธ๋“œ๋Š” ๊ฒ€์€์ƒ‰
    3. ๋ชจ๋“  ๋‹จ๋ง ๋…ธ๋“œ๋“ค์€ ๊ฒ€์€์ƒ‰ 
    4. ๋นจ๊ฐ„์ƒ‰ ๋…ธ๋“œ์˜ ์ž์‹์€ ๊ฒ€์€์ƒ‰
      • No Double Red(๋นจ๊ฐ„์ƒ‰ ๋…ธ๋“œ๊ฐ€ ์—ฐ์†์œผ๋กœ ๋‚˜์˜ฌ ์ˆ˜ ์—†์Œ)
    5. ๋ชจ๋“  ๋‹จ๋ง ๋…ธ๋“œ์—์„œ Black Depth๋Š” ๊ฐ™์Œ
      • ๋‹จ๋ง ๋…ธ๋“œ์—์„œ ๋ฃจํŠธ ๋…ธ๋“œ๊นŒ์ง€ ๊ฐ€๋Š” ๊ฒฝ๋กœ์—์„œ ๋งŒ๋‚˜๋Š” ๊ฒ€์€์ƒ‰ ๋…ธ๋“œ์˜ ๊ฐœ์ˆ˜๊ฐ€ ๊ฐ™์Œ 

 

 

๋ฐ˜์‘ํ˜•