λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°
  • μž₯원읡 κΈ°μˆ λΈ”λ‘œκ·Έ
πŸ’» Computer Science/- Data Structure, Algorithm

[μ•Œκ³ λ¦¬μ¦˜-이둠] λ ˆλ“œ λΈ”λž™ 트리(Red-Black Tree)

by Wonit 2019. 11. 23.

λ ˆλ“œ-λΈ”λž™ 트리(Red-Black Tree)

이진 검색 νŠΈλ¦¬μ—μ„œ μ‹œκ°„ λ³΅μž‘λ„λŠ” O(log n)이 될 μˆ˜λ„ 있고 O(n)이 될 μˆ˜λ„ μžˆλ‹€κ³  ν•˜μ˜€λŠ”λ° μ΄λŠ” 트리의 높이에 따라 κ²°μ •λœλ‹€κ³  ν–ˆλ‹€.

 

μ΄λŸ¬ν•œ 단점듀을 κ·Ήλ³΅ν•˜κΈ° μœ„ν•΄μ„œ κ³ μ•ˆν•΄ λ‚Έ 것은 λ°”λ‘œ ==κ· ν˜•μž‘νžŒ 이진 검색 트리== 이닀. κ· ν˜•μž‘νžŒ 이진 검색 νŠΈλ¦¬λž€ 것은 μ΅œμ•…μ˜ 경우 에도 이진 트리의 κ· ν˜•μ΄ 맞게 μœ μ§€λ˜λ„λ‘ ν•˜λŠ” 것을 λœ»ν•œλ‹€.

 

λ ˆλ“œ λΈ”λž™ νŠΈλ¦¬λŠ” 이진 검색 트리의 λͺ¨λ“  λ…Έλ“œμ— λ ˆλ“œ λ˜λŠ” λΈ”λž™μ˜ 색상을 μΉ ν•˜λŠ”λ° λ‹€μŒκ³Ό 같은 μ„±μ§ˆμ„ λ§Œμ‘±ν•΄ν•œλ‹€.
  • 1. Root Property: λ£¨νŠΈλŠ” λΈ”λž™μ΄λ‹€.

  • 2. External Property: λͺ¨λ“  리프(NIL)λŠ” λΈ”λž™μ΄λ‹€.

  • 3. Internal Property: λ…Έλ“œκ°€ λ ˆλ“œμ΄λ©΄ κ·Έ λ…Έλ“œμ˜ μžμ‹μ€ λ°˜λ“œμ‹œ λΈ”λž™μ΄λ‹€. (λ ˆλ“œ λ…Έλ“œκ°€ μ—°μ†μœΌλ‘œ λ‚˜μ˜¬ 수 μ—†λ‹€.)

  • 4. Depth Property: 루트 λ…Έλ“œμ—μ„œ μž„μ˜μ˜ λ¦¬ν”„λ…Έλ“œμ— 이λ₯΄λŠ” κ²½λ‘œμ—μ„œ λ§Œλ‚˜λŠ” λΈ”λž™μ˜ λ…Έλ“œμ˜ μˆ˜λŠ” λͺ¨λ‘ κ°™λ‹€ (λͺ¨λ“  리프 λ…Έλ“œμ—μ„œ BlackDepthλŠ” λͺ¨λ‘ κ°™λ‹€)

λ ˆλ“œ λΈ”λž™ νŠΈλ¦¬μ—μ„œλŠ” μ΄μ§„κ²€μƒ‰νŠΈλ¦¬μ˜ λ…Έλ“œκ°€ 가진 두 개의 μžμ‹μ€‘ NIL인 것이 있으면 λ…Έλ“œλ₯Ό ν•˜λ‚˜ λ§Œλ“€κ³  κ·Έ 것을 λ¦¬ν”„λ…Έλ“œλΌκ³  ν•œλ‹€. ν•˜μ§€λ§Œ μ‹€μ œ κ΅¬ν˜„ν•  λ–„λŠ” λͺ¨λ“  NIL 리프에 λŒ€ν•œ 포인터가 ν•˜λ‚˜μ˜ λ…Έλ“œλ₯Ό ν• λ‹Ήν•˜κ³  κ·Έ 곳에 NIL을 μ€€ 곳으둜 ν–₯ν•˜κ²Œ ν•˜λ©΄ λœλ‹€.

 

λ ˆλ“œ λΈ”λž™ νŠΈλ¦¬μ—μ„œμ˜ 검색

 

λ ˆλ“œ λΈ”λž™ νŠΈλ¦¬λŠ” 이진 검색 νŠΈλ¦¬μ™€ κ°™μ§€λ§Œ κ· ν˜•μ„ λ§žμΆ˜κ²ƒ μ΄λ―€λ‘œ κ²€μƒ‰μ˜ 방법은 λ˜‘κ°™λ‹€.

 

λ ˆλ“œ λΈ”λž™ νŠΈλ¦¬μ—μ„œμ˜ μ‚½μž…

 

λ ˆλ“œ λΈ”λž™ νŠΈλ¦¬μ—μ„œλŠ” μƒˆλ‘œμš΄ λ…Έλ“œλ₯Ό μ‚½μž…ν•  λ•Œ λ¨Όμ € 이진 검색 트리의 μ‚½μž… μ•Œκ³ λ¦¬μ¦˜μ— 따라 μ‚½μž…ν•œ λ’€ μƒˆ λ…Έλ“œμ˜ 색상을 λ ˆλ“œλ‘œ μΉ ν•œλ‹€. 이 λ…Έλ“œλ₯Ό x라고 ν•˜μž.

μƒˆ λ…Έλ“œ xλŠ” 항상 리프 λ…Έλ“œ(λΈ”λž™)에 λ§€λ‹¬λ¦¬λ―€λ‘œ μ•„λž˜λŠ” λ ˆλ“œκ°€ 였건 λΈ”λž™μ΄ 였건 상관 μ—†μ§€λ§Œ x의 μœ„μͺ½κ³Ό κ΄€λ ¨ν•΄μ„œ λ¬Έμ œκ°€ μƒκΈ°λŠ”μ§€ ν™•μΈν•΄μ•Όν•œλ‹€.

μƒˆ λ…Έλ“œx의 λΆ€λͺ¨ λ…Έλ“œ p κ°€ λΈ”λž™μΈ κ²½μš°λŠ” μ‚½μž…μ΄ μ™„λ£Œ λ˜μ§€λ§Œ λ¬Έμ œλŠ” λΆ€λͺ¨ λ…Έλ“œpκ°€ ==λ ˆλ“œ==인 경우 λ¬Έμ œκ°€ 생긴닀.

경우λ₯Ό λ‚˜λˆ μ„œ μƒκ°ν•΄λ³΄μž

1. pκ°€ λΈ”λž™μΌ λ•Œ
  • λ ˆλ“œ-λΈ”λž™ 트리의 쑰건이 λ§Œμ‘±ν•˜κΈ°μ— μ‚½μž…μ΄ κ°€λŠ₯
2. pκ°€ λ ˆλ“œμΌ λ•Œ
  • λ ˆλ“œκ°€ 2개 μ—°μ†μ΄λ―€λ‘œ νŠΉμ„±3(Internal Property)λ₯Ό μœ„λ°˜ν•œλ‹€.
  • 그런데 μ‚½μž… μ „μ—λŠ” λ ˆλ“œ-λΈ”λž™ νŠΈλ¦¬μ˜€μœΌλ―€λ‘œ νŠΉμ„±3에 따라 p의 λΆ€λͺ¨ λ…Έλ“œλŠ” λ°˜λ“œμ‹œ λΈ”λž™μ΄λ‹€.
  • λ§ˆμ°¬κ°€μ§€κ³  νŠΉμ„± 3에 따라 x의 ν˜•μ œ λ…Έλ“œλ„ λ°˜λ“œμ‹œ λΈ”λž™μ΄λ‹€.

 

λŒ“κΈ€