이진 트리(Binary Tree)

2020. 4. 24. 13:25Β·πŸ“ Computer Science/✏ Data Structure

이진 트리(Binary Tree)

μ–΄λ–€ λ…Έλ“œμ˜ μžμ‹ λ…Έλ“œμ˜ μˆ˜κ°€ μ΅œλŒ€ 2개λ₯Ό λ„˜μ§€ μ•ŠλŠ” νŠΈλ¦¬μ΄λ‹€.

  • 포화(Perfect) μ΄μ§„νŠΈλ¦¬: λͺ¨λ“  레벨이 꽉 μ°¬ μ΄μ§„νŠΈλ¦¬μ΄λ‹€.
  • μ™„μ „(Complete) μ΄μ§„νŠΈλ¦¬: μœ„μ—μ„œ μ•„λž˜λ‘œ, μ™Όμͺ½μ—μ„œ 였λ₯Έμͺ½μœΌλ‘œ μ°¨λ‘€λŒ€λ‘œ μ±„μ›Œμ§„ νŠΈλ¦¬μ΄λ‹€.
  • 사ν–₯ μ΄μ§„νŠΈλ¦¬: ν•œμͺ½μœΌλ‘œ κΈ°μšΈμ–΄μ§„ 트리둜 탐색 μ‹œκ°„μ€ O(N)이닀.

 

1. 이진 탐색 트리(Binary Search Tree)

탐색 μ‹œκ°„μ΄ 평균 O(logN)으둜 효율적인 탐색이 κ°€λŠ₯ν•˜λ‹€.

  • 각 λ…Έλ“œμ˜ μžμ‹μ΄ 2개 μ΄ν•˜μ΄λ‹€.
  • 각 λ…Έλ“œμ˜ μ™Όμͺ½ μžμ‹μ€ λΆ€λͺ¨λ³΄λ‹€ μž‘κ³  였λ₯Έμͺ½ μžμ‹μ€ λΆ€λͺ¨λ³΄λ‹€ 크닀.
  • μ€‘λ³΅λœ κ°’μ˜ λ…Έλ“œκ°€ μ—†μ–΄μ•Ό ν•œλ‹€.

2020.04.29 - [πŸ“ Computer Science/✏ Algorithm] - [C] 이진 탐색 트리(BST)

 

[C] 이진 탐색 트리(BST)

이진 탐색 트리(BST) 각각의 λ…Έλ“œκ°€ μ΅œλŒ€ 2개의 μžμ‹ λ…Έλ“œλ₯Ό κ°€μ§€λŠ” 이진 트리의 ꡬ쑰λ₯Ό κ°–μΆ”κ³  μžˆλ‹€. μ—°κ²° 리슀트둜 κ΅¬ν˜„λœλ‹€. κΈ°λ³Έ 원리 λͺ¨λ“  λ…Έλ“œμ˜ 값은 μœ μΌν•˜λ‹€. 루트 λ…Έλ“œλ₯Ό κΈ°μ€€μœΌλ‘œ μ™Όμͺ½

tech-interview.tistory.com

 

2. λ ˆλ“œ λΈ”λž™ 트리

  • 루트 λ…Έλ“œμ˜ 색깔은 λΈ”λž™μ΄λ‹€.
  • λͺ¨λ“  리프 λ…Έλ“œλ“€μ€ λΈ”λž™ λ…Έλ“œμ΄λ‹€: λ…Έλ“œκ°€ κ°€μ§„ 두 개의 μžμ‹ 포인터 쀑 NIL인 것이 있으면 λ…Έλ“œλ₯Ό ν•˜λ‚˜ λ§Œλ“€μ–΄ 그것을 리프 λ…Έλ“œλΌ λΆ€λ₯Έλ‹€.
  • λ ˆλ“œ λ…Έλ“œμ˜ μžμ‹μ€ λΈ”λž™ λ…Έλ“œμ΄λ‹€.
  • 루트 λ…Έλ“œμ—μ„œ μž„μ˜μ˜ 리프 λ…Έλ“œλ‘œ κ°€λŠ” κ²½λ‘œμ—μ„œ λ§Œλ‚˜λŠ” λΈ”λž™ λ…Έλ“œμ˜ μˆ˜λŠ” λͺ¨λ‘ κ°™λ‹€.

 

λ ˆλ“œ λΈ”λž™ 트리

 

3. B 트리

λ””μŠ€ν¬ μ ‘κ·Ό νšŸμˆ˜κ°€ 적어 λŒ€λŸ‰μ˜ 데이터가 μ €μž₯된 λ””μŠ€ν¬ ν™˜κ²½μ—μ„œ μ‚¬μš©ν•˜κΈ°μ— μ ν•©ν•œ 이진 νŠΈλ¦¬μ΄λ‹€.

  • ν•˜λ‚˜μ˜ λ…Έλ“œμ— λ§Žμ€ 데이터 μ €μž₯
  • 각 λ…Έλ“œμ˜ μžλ£ŒλŠ” μ •λ ¬λœ μƒνƒœμ΄κ³  자료의 μˆ˜κ°€ N개면 μžμ‹ λ…Έλ“œμ˜ μˆ˜λŠ” N+1κ°œμ΄λ‹€.
  • 루트 λ…Έλ“œλŠ” 적어도 2개 μ΄μƒμ˜ μžμ‹ λ…Έλ“œλ₯Ό κ°€μ Έμ•Ό ν•˜κ³  λ‚˜λ¨Έμ§€ λ…Έλ“œλŠ” 적어도 N/2개의 자료λ₯Ό κ°€μ Έμ•Ό ν•œλ‹€.
  • λͺ¨λ“  리프 λ…Έλ“œλŠ” 같은 깊이λ₯Ό κ°€μ§„λ‹€.

 

B 트리

 

4. νž™(Heap)

배열에 κΈ°λ°˜ν•œ μ™„μ „ 이진 트리둜 λ°˜μ •λ ¬ μƒνƒœμ΄κ³  μ€‘λ³΅λœ 값을 ν—ˆμš©ν•œλ‹€.

  • μ΅œλŒ€ νž™(Max Heap): 루트 λ…Έλ“œμ— μžˆλŠ” 값이 제일 크고 각 λ…Έλ“œμ˜ 값이 ν•΄λ‹Ή μžμ‹ λ…Έλ“œμ˜ 값보닀 ν¬κ±°λ‚˜ κ°™λ‹€.
  • μ΅œμ†Œ νž™(Min Heap): μ΅œλŒ€ νž™κ³Ό λ°˜λŒ€μ΄λ‹€.

 

νž™

μ €μž‘μžν‘œμ‹œ (μƒˆμ°½μ—΄λ¦Ό)
'πŸ“ Computer Science/✏ Data Structure' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€
  • μ•Œκ³ λ¦¬μ¦˜ μ„±λŠ₯ 뢄석
  • ν•΄μ‹œ(Hash)
  • κ·Έλž˜ν”„(Graph)
  • μ„ ν˜• ꡬ쑰(Linear Structure)와 λΉ„μ„ ν˜• ꡬ쑰(Non-Linear Structure)
Blxxming
Blxxming
CS 지식과 κ³΅λΆ€ν•˜λ‹€ 배운 것, κ²½ν—˜ν•œ 것 등을 κΈ°λ‘ν•˜λŠ” λΈ”λ‘œκ·Έμž…λ‹ˆλ‹€.
  • Blxxming
    πŸ’‘λ²ˆλœ©πŸ’‘
    Blxxming
  • 전체
    였늘
    μ–΄μ œ
  • 곡지사항

    • Tech Interview
    • πŸ“š Tech (246)
      • πŸ“ Computer Science (96)
        • ✏ OS (12)
        • ✏ Network & Web (10)
        • ✏ Database (11)
        • ✏ Data Structure (6)
        • ✏ Algorithm (40)
        • ✏ Design Pattern (9)
        • ✏ Cloud Computing (3)
        • ✏ (5)
      • πŸ“ Language (73)
        • ✏ Language (6)
        • ✏ C & C++ (11)
        • ✏ C# (19)
        • ✏ JAVA (37)
      • πŸ“ Game (43)
        • ✏ Computer Graphics (2)
        • ✏ Unity (14)
        • ✏ Unreal (26)
        • ✏ (1)
      • πŸ“ Book (34)
        • ✏ Effective (3)
        • ✏ Game Server (16)
        • ✏ Clean Code (14)
        • ✏ (1)
  • hELLOΒ· Designed Byμ •μƒμš°.v4.10.0
Blxxming
이진 트리(Binary Tree)
μƒλ‹¨μœΌλ‘œ

ν‹°μŠ€ν† λ¦¬νˆ΄λ°”