πŸ’Ώ Data/λΆ€νŠΈμΊ ν”„

[TIL] 104. [자료ꡬ쑰] 순회

Jayden1116 2022. 4. 12. 22:39

ν‚€μ›Œλ“œ

  • 순회(트리 : μ „μœ„/μ€‘μœ„/ν›„μœ„, κ·Έλž˜ν”„ : BFS/DFS)

순회(Traversal)

  • 트리, κ·Έλž˜ν”„μ™€ 같이 μ—°κ²°λœ μžλ£Œκ΅¬μ‘°μ—μ„œ λͺ¨λ“  λ…Έλ“œλ₯Ό ν•œ λ²ˆμ”© νƒμƒ‰ν•˜λŠ” 것
  • 순회의 λͺ©μ  : λͺ¨λ“  ν˜Ήμ€ νŠΉμ • λ…Έλ“œλ₯Ό λ°©λ¬Έν•˜λŠ” 방법을 μ°ΎλŠ” 것
  • λ°©ν–₯에 따라 μˆœνšŒν•˜λŠ” 방법이 달라진닀.

[순회] 트리ꡬ쑰

  • 트리 κ΅¬μ‘°μ—μ„œμ˜ μˆœνšŒλŠ” 크게 μ „μœ„, μ€‘μœ„, ν›„μœ„λ‘œ λ‚˜λˆ„μ–΄μ§„λ‹€.

image

  • μ „μœ„ : 1. Root node -> 2. Left node -> 3. Right node
  • μ€‘μœ„ : 1. Left node -> 2. Root node -> 3. Right node
  • ν›„μœ„ : 1. Left node -> 2. Right node -> 3. Root node
  • λ‹¨μˆœν•˜κ²Œ μ™Όμͺ½μ—μ„œ 였λ₯Έμͺ½μ΄λ©΄μ„œ Root node의 μœ„μΉ˜μ— 따라 λ‚˜λˆ„μ–΄μ§„λ‹€κ³  μƒκ°ν•˜λ©΄ 쉽닀.
# μž¬κ·€ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•œ 트리ꡬ쑰 순회

## μ „μœ„

def pre_order(node):
    print(node.value)
    pre_order(node.left)
    pre_order(node.right)

## μ€‘μœ„

def in_order(node):
    in_order(node.left)
    print(node.value)
    in_order(node.right)

## ν›„μœ„

def post_order(node):
    post_order(node.left)
    post_order(node.right)
    print(node.value)