Topcit

이진 트리 순회 방식

Life Log 2024. 11. 10. 13:08
728x90
λ°˜μ‘ν˜•

πŸ“˜ 이진 트리 순회 방법 μ™„λ²½ κ°€μ΄λ“œ

μ•ˆλ…•ν•˜μ„Έμš”! μ˜€λŠ˜μ€ ν”„λ‘œκ·Έλž˜λ°μ—μ„œ 많이 μ‚¬μš©λ˜λŠ” 이진 트리(Binary Tree)의 순회 방법에 λŒ€ν•΄ μ•Œμ•„λ³΄κ² μŠ΅λ‹ˆλ‹€. 이진 νŠΈλ¦¬λŠ” λ…Έλ“œκ°€ μ΅œλŒ€ 두 개의 μžμ‹ λ…Έλ“œλ₯Ό κ°€μ§ˆ 수 μžˆλŠ” 계측적 자료 κ΅¬μ‘°μž…λ‹ˆλ‹€. 데이터λ₯Ό μ €μž₯ν•˜κ³  νƒμƒ‰ν•˜λŠ” 데 맀우 효율적인 κ΅¬μ‘°μΈλ°μš”, 이진 트리의 데이터λ₯Ό 탐색할 λ•Œ μ‚¬μš©λ˜λŠ” 순회 방법(Traversal)에 λŒ€ν•΄ μžμ„Ένžˆ μ•Œμ•„λ³Όκ²Œμš”. 😊


πŸ” 이진 νŠΈλ¦¬λž€?

이진 νŠΈλ¦¬λŠ” λ…Έλ“œ(Node)와 κ°„μ„ (Edge)둜 κ΅¬μ„±λœ 자료 κ΅¬μ‘°μž…λ‹ˆλ‹€. 각 λ…Έλ“œλŠ” μ΅œλŒ€ 두 개의 μžμ‹ λ…Έλ“œλ₯Ό 가지며, 보톡 μ™Όμͺ½ μžμ‹ λ…Έλ“œ(left child)와 였λ₯Έμͺ½ μžμ‹ λ…Έλ“œ(right child)둜 κ΅¬λΆ„λ©λ‹ˆλ‹€.

🌲 이진 트리 μˆœνšŒλž€?

이진 νŠΈλ¦¬μ—μ„œ μˆœνšŒλž€, 트리 ꡬ쑰의 λͺ¨λ“  λ…Έλ“œλ₯Ό νŠΉμ • μˆœμ„œμ— 따라 ν•œ λ²ˆμ”© λ°©λ¬Έν•˜λŠ” 것을 μ˜λ―Έν•©λ‹ˆλ‹€. 순회 방법에 따라 λ…Έλ“œλ₯Ό λ°©λ¬Έν•˜λŠ” μˆœμ„œκ°€ λ‹¬λΌμ§‘λ‹ˆλ‹€.

이진 트리 μˆœνšŒμ—λŠ” 크게 μ„Έ 가지 방법이 μžˆμŠ΅λ‹ˆλ‹€:

  1. μ „μœ„ 순회 (Pre-order Traversal)
  2. μ€‘μœ„ 순회 (In-order Traversal)
  3. ν›„μœ„ 순회 (Post-order Traversal)

1️⃣ μ „μœ„ 순회 (Pre-order Traversal)

  • λ°©λ¬Έ μˆœμ„œ: 루트 β†’ μ™Όμͺ½ μ„œλΈŒνŠΈλ¦¬ β†’ 였λ₯Έμͺ½ μ„œλΈŒνŠΈλ¦¬

  • μ„€λͺ…: 트리의 루트λ₯Ό λ¨Όμ € λ°©λ¬Έν•œ ν›„, μ™Όμͺ½ μžμ‹ λ…Έλ“œ, κ·Έ λ‹€μŒ 였λ₯Έμͺ½ μžμ‹ λ…Έλ“œλ₯Ό λ°©λ¬Έν•©λ‹ˆλ‹€.

  • μ˜ˆμ‹œ:

           A
          / \
         B   C
        / \
       D   E
    • μ „μœ„ 순회 κ²°κ³Ό: A β†’ B β†’ D β†’ E β†’ C
  • ν™œμš© 사둀: 볡사본 생성, ꡬ쑰적 데이터 좜λ ₯ λ“±

2️⃣ μ€‘μœ„ 순회 (In-order Traversal)

  • λ°©λ¬Έ μˆœμ„œ: μ™Όμͺ½ μ„œλΈŒνŠΈλ¦¬ β†’ 루트 β†’ 였λ₯Έμͺ½ μ„œλΈŒνŠΈλ¦¬

  • μ„€λͺ…: μ™Όμͺ½ μžμ‹ λ…Έλ“œλ₯Ό λ¨Όμ € λ°©λ¬Έν•˜κ³ , κ·Έ λ‹€μŒ 루트, λ§ˆμ§€λ§‰μœΌλ‘œ 였λ₯Έμͺ½ μžμ‹ λ…Έλ“œλ₯Ό λ°©λ¬Έν•©λ‹ˆλ‹€.

  • μ˜ˆμ‹œ:

           A
          / \
         B   C
        / \
       D   E
    • μ€‘μœ„ 순회 κ²°κ³Ό: D β†’ B β†’ E β†’ A β†’ C
  • ν™œμš© 사둀: μ •λ ¬λœ 데이터 좜λ ₯, 이진 검색 νŠΈλ¦¬μ—μ„œ 유용

3️⃣ ν›„μœ„ 순회 (Post-order Traversal)

  • λ°©λ¬Έ μˆœμ„œ: μ™Όμͺ½ μ„œλΈŒνŠΈλ¦¬ β†’ 였λ₯Έμͺ½ μ„œλΈŒνŠΈλ¦¬ β†’ 루트

  • μ„€λͺ…: μ™Όμͺ½ μžμ‹ λ…Έλ“œλ₯Ό λ¨Όμ € λ°©λ¬Έν•˜κ³ , κ·Έ λ‹€μŒ 였λ₯Έμͺ½ μžμ‹ λ…Έλ“œ, λ§ˆμ§€λ§‰μœΌλ‘œ 루트λ₯Ό λ°©λ¬Έν•©λ‹ˆλ‹€.

  • μ˜ˆμ‹œ:

           A
          / \
         B   C
        / \
       D   E
    • ν›„μœ„ 순회 κ²°κ³Ό: D β†’ E β†’ B β†’ C β†’ A
  • ν™œμš© 사둀: 트리 ꡬ쑰 μ‚­μ œ, 계산식 트리 평가


πŸ’‘ 이진 트리 순회 λ°©λ²•μ˜ 비ꡐ

순회 방법 λ°©λ¬Έ μˆœμ„œ μ˜ˆμ‹œ κ²°κ³Ό
μ „μœ„ 순회 루트 β†’ 쒌 β†’ 우 A β†’ B β†’ D β†’ E β†’ C
μ€‘μœ„ 순회 쒌 β†’ 루트 β†’ 우 D β†’ B β†’ E β†’ A β†’ C
ν›„μœ„ 순회 쒌 β†’ 우 β†’ 루트 D β†’ E β†’ B β†’ C β†’ A

✍️ 정리

  • μ „μœ„ μˆœνšŒλŠ” λ…Έλ“œμ˜ ꡬ쑰λ₯Ό μ‰½κ²Œ 볡사할 λ•Œ μœ μš©ν•©λ‹ˆλ‹€.
  • μ€‘μœ„ μˆœνšŒλŠ” 이진 검색 트리(Binary Search Tree)μ—μ„œ 데이터λ₯Ό μ •λ ¬λœ μˆœμ„œλ‘œ 좜λ ₯ν•  λ•Œ μ‚¬μš©λ©λ‹ˆλ‹€.
  • ν›„μœ„ μˆœνšŒλŠ” λͺ¨λ“  λ…Έλ“œλ₯Ό μ‚­μ œν•˜κ±°λ‚˜, 계산식 트리의 값을 평가할 λ•Œ μ ν•©ν•©λ‹ˆλ‹€.

πŸ“Œ 마무리

이진 트리의 순회 방법을 μ΄ν•΄ν•˜λŠ” 것은 ν”„λ‘œκ·Έλž˜λ°μ—μ„œ 맀우 μ€‘μš”ν•œ κ°œλ…μž…λ‹ˆλ‹€. 특히, 트리 ꡬ쑰λ₯Ό μ‚¬μš©ν•œ 문제 ν•΄κ²°μ΄λ‚˜ μ•Œκ³ λ¦¬μ¦˜ μ΅œμ ν™”μ—μ„œ 자주 ν™œμš©λ˜κΈ° λ•Œλ¬Έμ—, 각 순회 λ°©λ²•μ˜ 차이점과 νŠΉμ§•μ„ 잘 μ΄ν•΄ν•˜κ³  μžˆλŠ” 것이 μ’‹μŠ΅λ‹ˆλ‹€.

이 μžλ£ŒλŠ” μ‹œμŠ€ν…œ μ•„ν‚€ν…μ²˜ 이해와 ν™œμš© 자료λ₯Ό μ°Έκ³ ν•˜μ—¬ μž‘μ„±ν•˜μ˜€μŠ΅λ‹ˆλ‹€. 도움이 λ˜μ…¨κΈΈ 바라며, λ‹€μŒμ—λ„ μœ μ΅ν•œ μ •λ³΄λ‘œ μ°Ύμ•„λ΅™κ² μŠ΅λ‹ˆλ‹€! πŸ–₯️🌐

κ°μ‚¬ν•©λ‹ˆλ‹€! πŸ˜„

728x90
λ°˜μ‘ν˜•