DevLog πŸ“¨/DataStructure

[DevLog][DS] Red Black Tree: concept

cece00 2023. 9. 3. 10:11

Red Black Tree

λ‹€μŒκ³Ό 같은 μ„±μ§ˆμ„ λ§Œμ‘±ν•˜λŠ” 이진 검색 트리

  1. λͺ¨λ“  λ…Έλ“œλŠ” λ ˆλ“œλ‚˜ λΈ”λž™
  2. λ£¨νŠΈλŠ” λΈ”λž™
  3. 리프(NIL)λŠ” λΈ”λž™
  4. λ ˆλ“œ λ…Έλ“œμ˜ μžμ‹μ€ λͺ¨λ‘ λΈ”λž™
  5. ν•œ λ…Έλ“œλ‘œλΆ€ν„° κ·Έ μžμ†μΈ 리프 λ…Έλ“œλ‘œκΉŒμ§€ κ°€λŠ” κ²½λ‘œμ— ν¬ν•¨λœ λΈ”λž™ λ…Έλ“œμ˜ κ°œμˆ˜κ°€ κ°™μŒ

λ ˆλ“œ λΈ”λž™ νŠΈλ¦¬λŠ” 이진 검색 νŠΈλ¦¬λ‘œμ„œ, 각 λ…Έλ“œ λ‹Ή ν•œ λΉ„νŠΈμ˜ μΆ”κ°€ λ©”λͺ¨λ¦¬μ— λ…Έλ“œμ˜ 색깔(λ ˆλ“œ, λΈ”λž™)을 μ €μž₯ν•œλ‹€. λ£¨νŠΈμ—μ„œ λ¦¬ν”„κΉŒμ§€μ˜ κ²½λ‘œμ— λ‚˜νƒ€λ‚˜λŠ” λ…Έλ“œμ˜ 색을 μ œν•œν•¨μœΌλ‘œμ¨ κ·ΈλŸ¬ν•œ 경둜 쀑 μ–΄λ– ν•œ 것도 λ‹€λ₯Έ 것보닀 두 λ°° 이상 길지 μ•ŠμŒμ„ 보μž₯ν•  수 μžˆλ‹€. 이둜써 κ·Όμ‚¬μ μœΌλ‘œ κ· ν˜•μ„ 이룬 트리 κ°€ λœλ‹€.

κ²½κ³„λ…Έλ“œ sentinel

각 λ…Έλ“œλ§ˆλ‹€ λ¦¬ν”„λ…Έλ“œλ₯Ό λͺ¨λ‘ NIL둜 λΆ™μ—¬μ£ΌλŠ” λŒ€μ‹ , 이λ₯Ό ν‘œν˜„ν•˜λŠ” ν•˜λ‚˜μ˜ λ…Έλ“œλ§Œμ„ μ‚¬μš©ν•  수 μžˆλŠ”λ° 이λ₯Ό κ²½κ³„λ…Έλ“œ(sentinel)라고 ν•œλ‹€. ν‘œκΈ°λŠ” T.nil. λ ˆλ“œλΈ”λž™ 트리의 λͺ¨λ“  λ¦¬ν”„λŠ” κ°’μ˜ 의미λ₯Ό 갖지 μ•ŠκΈ° λ•Œλ¬Έμ— κ°€λŠ₯. (λͺ¨λ‘ 뢙여쀄 μˆ˜λ„ μžˆλ‹€. κ·ΈλŸ¬λ‚˜ μ €μž₯곡간이 λ‚­λΉ„λœλ‹€.)

흑색 높이 black-height

ν•œ λ…Έλ“œμ—μ„œ λ¦¬ν”„κΉŒμ§€μ˜ κ²½λ‘œμ— μžˆλŠ” 흑색 λ…Έλ“œμ˜ 개수λ₯Ό λ§ν•œλ‹€. 자기 μžμ‹ μ€ μ œμ™Έν•œλ‹€. λ ˆλ“œλΈ”λž™ νŠΉμ„±μ˜ 5번째 쑰건 λ•Œλ¬Έμ— λ£¨νŠΈμ—μ„œ λ¦¬ν”„λ‘œ λ‚΄λ €κ°€λŠ” λͺ¨λ“  경둜의 black-height(bh)λŠ” κ°™λ‹€. 트리의 bhλŠ” 루트의 bh와 λ™μΌν•˜λ‹€.

μ™œ 쒋은가?

n개의 λ‚΄λΆ€ λ…Έλ“œλ₯Ό κ°€μ§€λŠ” λ ˆλ“œλΈ”λž™ νŠΈλ¦¬λŠ” μ΅œλŒ€ $2\lg(n+1)%의 높이λ₯Ό 가진닀.
n개의 λ…Έλ“œλ₯Ό κ°–λŠ” 일반 binary search tree의 높이가 nκΉŒμ§€ κ°€λŠ₯ν•œ 것과 달리, λ ˆλ“œλΈ”λž™ 트리의 λ†’μ΄λŠ” $2\lg(n+1)$ 둜 μ œν•œλœλ‹€.

'DevLog πŸ“¨ > DataStructure' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€

[DevLog][DS]Red Black Tree: Operation  (0) 2023.09.05