[์ž๋ฃŒ๊ตฌ์กฐ] 13๊ฐ• - ๋ฉ€ํ‹ฐ์›จ์ด ํƒ์ƒ‰ ํŠธ๋ฆฌ(2)

2025. 12. 5. 19:25ยท๐ŸŽ“๋ฐฉ์†กํ†ต์‹ ๋Œ€ํ•™๊ต/๐Ÿ”ข์ž๋ฃŒ๊ตฌ์กฐ

โœ… 1. 2-3 ํŠธ๋ฆฌ

[ ํŠธ๋ฆฌ ๋ถ„๋ฅ˜ ]

  • BํŠธ๋ฆฌ: ๋ฉ€ํ‹ฐ์›จ์ด ํƒ์ƒ‰ํŠธ๋ฆฌ๋กœ ์ด์ง„ ํƒ์ƒ‰ ํŠธ๋ฆฌ์™€ ๊ทœ์น™์„ ๋™์ผํ•˜์ง€๋งŒ, ๋‹ค๋ฅธ์ ์€ 2๊ฐœ์˜ ๋…ธ๋“œ ์ œํ•œ์ด ์•„๋‹Œ ์—ฌ๋Ÿฌ ๋…ธ๋“œ๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์žˆ์œผ๋ฉฐ, ํ•ด๋‹น m์› ๋ฉ€ํ‹ฐ์›จ์ด ํŠธ๋ฆฌ๋กœ๋ถ€ํ„ฐ ๊ท ํ˜•์„ ๋”ํ•œ ํŠธ๋ฆฌ์ž„. ์ด์ง„ ํƒ์ƒ‰ ํŠธ๋ฆฌ์˜ AVL, BB, Splay ๊ท ํ˜• ํŠธ๋ฆฌ์™€ ๋น„์Šทํ•จ.

(1) 2-3 ํŠธ๋ฆฌ(2-3 tree)

  • ์ฐจ์ˆ˜๊ฐ€ 2 ๋˜๋Š” 3์ธ ๋‚ด๋ถ€ ๋…ธ๋“œ๋ฅผ ๊ฐ–๋Š” ํƒ์ƒ‰ ํŠธ๋ฆฌ๋ฅผ ์˜๋ฏธํ•œ๋‹ค.
  • ์‰ฝ๊ฒŒ๋งํ•ด, ๋ชจ๋“  ๋…ธ๋“œ๊ฐ€ 2๋…ธ๋“œ ๋˜๋Š” 3๋…ธ๋“œ๋กœ๋งŒ ์ด๋ฃจ์–ด์ง„ ๊ท ํ˜• ํƒ์ƒ‰ ํŠธ๋ฆฌ์ด๋ฉฐ, ํ•ด๋‹น ๊ตฌ์กฐ๋Š” ๋ชจ๋“  ๋…ธ๋“œ๊ฐ€ 2๊ฐœ ๋˜๋Š” 3๊ฐœ์˜ ์ž์‹ ๋…ธ๋“œ๋ฅผ ๊ฐ€์ง€๋Š” ํŠธ๋ฆฌ์ž„.
  • 2-๋…ธ๋“œ ํ˜น์€ 3-๋…ธ๋“œ๋ผ๋Š” ์ œ์•ฝ์ด ๋‚ด๋ถ€ ๋…ธ๋“œ์—๋งŒ ํ•ด๋‹นํ•จ. ์ฆ‰, ์žŽ ๋…ธ๋“œ์˜ ๊ฒฝ์šฐ ์ž์‹ ๋…ธ๋“œ๊ฐ€ ์—†์œผ๋ฏ€๋กœ ์–ด์ฐจํ”ผ ํ•ด๋‹น์ด ์•ˆ๋จ.
  • ๋ชจ๋“  ์žŽ ๋…ธ๋“œ๋Š” ๊ฐ™์€ ๋ ˆ๋ฒจ์— ์žˆ์–ด์•ผ ํ•œ๋‹ค๋Š” ์ œ์•ฝ๋งŒ ์กด์žฌํ•จ.
  • ** ํ•ต์‹ฌ์€ 2-3 ํŠธ๋ฆฌ๋Š” ์ฐจ์ˆ˜ 3 B-ํŠธ๋ฆฌ์™€ ์™„์ „ํžˆ ๋™์ผํ•œ ๊ฐœ๋…์ด๋ฉฐ, ๋…ธ๋“œ๊ฐ€ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋Š” ํ‚ค ๊ฐœ์ˆ˜๋ฅผ 1~2๊ฐœ(์ฆ‰ 2-๋…ธ๋“œ/3-๋…ธ๋“œ)๋กœ ์ œํ•œํ•ด๋‘” ํ˜•ํƒœ์ž„. **

(2) 2-3 ํŠธ๋ฆฌ - ์กฐ๊ฑด

  • ๊ฒฐ๊ตญ BํŠธ๋ฆฌ์˜ ๊ทœ์น™์„ ๋ชจ๋‘ ๋”ฐ๋ฅด๋ฉด์„œ BํŠธ๋ฆฌ๋Š” ๋…ธ๋“œ์˜ ์ œํ•œ์„ ๋‘์ง€ ์•Š๋Š” ๋ฐ˜๋ฉด 2-3 ํŠธ๋ฆฌ๋Š” ๋…ธ๋“œ์˜ ๊ฐœ์ˆ˜๋ฅผ 2๊ฐœ ๋˜๋Š” 3๊ฐœ๋กœ ์ œํ•œ์„ ๋‘” ํŠธ๋ฆฌ๋กœ ๋ณด๋ฉด ๋จ.

(3) 2-3 ํŠธ๋ฆฌ - ํƒ์ƒ‰

[ ๋…ธ๋“œ ๊ตฌ์กฐ ]

  • 2๊ฐœ์˜ key ์™€ 3๊ฐœ์˜ point ๋กœ ์ด๋ฃจ์–ด์ง„ ๋…ธ๋“œ์ž„. ( ๋…ธ๋“œ์˜ ๊ตฌ์กฐ๋Š” 3์ฐจ B tree ๋กœ ๋ณผ ์ˆ˜ ์žˆ์Œ. )

[ ํƒ์ƒ‰ ๋กœ์ง ]

  • ์ฐพ๊ณ ์ž ํ•˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ํ•จ์ˆ˜ ์ž…๋ ฅ ๋ฐ์ดํ„ฐ๋กœ ์ „๋‹ฌ ํ›„ switch ๋ฌธ์˜ ์กฐ๊ฑด์—๋Š” compare(x, t) ๋ฅผ ์ง„ํ–‰ํ•จ.
  • ํ•ด๋‹น compare(x, t) ํ•จ์ˆ˜๋Š” ์ฐพ๊ณ ์žํ•˜๋Š” ๋ฐ์ดํ„ฐ์™€ ํ•ด๋‹น ํฌ์ธํ„ฐ์˜ lkey ์™€ rkey ๋ฅผ ๋น„๊ตํ•œ ๋’ค ์–ด๋–ค ํฌ์ธํ„ฐ๋กœ ๊ฐˆ์ง€ 1~4 ์ •์ˆ˜ ๋ฆฌํ„ด.
  • ์ดํ›„, 1~4 ์ค‘ ํ•˜๋‚˜๊ฐ€ ๋ฆฌํ„ด์ด ๋˜๋ฉด ํ•ด๋‹น case ๋ฅผ ์ˆ˜ํ–‰ํ•˜๊ฒŒ ๋จ.
  • case ๋Š” t ์— ํ˜„์žฌ ์ž์‹ ๋…ธ๋“œ ์ค‘ ์–ด๋–ค ํฌ์ธํ„ฐ๋กœ ๊ฐˆ์ง€ ์ •ํ•ด์„œ ๋ฆฌํ„ด์„ ํ•ด์คŒ. ์žฌ๊ท€์  ํ˜ธ์ถœ ๋ฐฉ์‹์œผ๋กœ ์ฐฟ์•„๊ฐ€๋Š” ์›๋ฆฌ์ž„.
  • ์œ„์™€ ๊ฐ™์€ ๋กœ์ง์„ ํ†ตํ•ด ์›ํ•˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ 2-3 ํŠธ๋ฆฌ์—์„œ ์ฐพ์„ ์ˆ˜ ์žˆ์Œ.

(4) 2-3 ํŠธ๋ฆฌ - ์‚ฝ์ž…

  • ํŠธ๋ฆฌ ๊ตฌ์กฐ์—์„  ์‚ฝ์ž…๊ณผ ์‚ญ์ œ ์—ฐ์‚ฐ์— ๋Œ€ํ•ด์„œ ์˜ค๋ฒ„ํ—ค๋“œ๊ฐ€ ํด ์ˆ˜ ๋ฐ–์— ์—†์Œ.
  • ์ฆ‰, ํŠธ๋ฆฌ์˜ ํ˜•ํƒœ๋ฅผ ์˜จ์ „ํžˆ ์œ ์ง€๋ฅผ ์‹œ์ผœ์ค˜์•ผ ํ•˜๋Š” ๋…ผ๋ฆฌ์  ์ œ์•ฝ ์กฐ๊ฑด์„ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋Œ€๋ถ€๋ถ„์ž„.
  • ์‚ฝ์ž…๊ณผ ์‚ญ์ œ๊ฐ€ ์ผ์–ด๋‚  ๋•Œ ํŠธ๋ฆฌ์˜ ๊ตฌ์กฐ๊ฐ€ ๋งŽ์ด ๋ฐ”๋€” ์ˆ˜ ์žˆ๋Š”๋ฐ, ์ตœ์†Œํ•œ์˜ ๋ณ€๊ฒฝ๋งŒ์œผ๋กœ ํŠธ๋ฆฌ ๊ตฌ์กฐ๊ฐ€ ์œ ์ง€๋˜๋Š” ํŠธ๋ฆฌ๊ฐ€ ํšจ์œจ์ด ์ข‹์Œ.

[ 2-3 ํŠธ๋ฆฌ - ์‚ฝ์ž… ์•Œ๊ณ ๋ฆฌ์ฆ˜ ]

(5) 2-3 ํŠธ๋ฆฌ - ์‚ญ์ œ

  • 2-3 ํŠธ๋ฆฌ์˜ ์‚ญ์ œ์—์„œ ์žŽ ๋…ธ๋“œ๊ฐ€ ์•„๋‹Œ ๋…ธ๋“œ์˜ ํ‚ค๋ฅผ ์‚ญ์ œํ•˜๋ฉด ๊ทธ๊ณณ์„ ๋‹ค๋ฅธ ํ‚ค๋กœ ๋Œ€์ฒดํ•ด์•ผ ํ•จ
  • ์ผ๋ฐ˜์ ์œผ๋กœ ์‚ญ์ œํ•œ ํ‚ค์˜ ์™ผ์ชฝ ์„œ๋ธŒํŠธ๋ฆฌ์—์„œ ๊ฐ€์žฅ ํฐ ํ‚ค ๊ฐ’์ด๋‚˜ ์˜ค๋ฅธ์ชฝ ์„œ๋ธŒ ํŠธ๋ฆฌ์—์„œ ๊ฐ€์žฅ ์ž‘์€ ํ‚ค ๊ฐ’์„ ์„ ํƒํ•˜์—ฌ ๋Œ€์ฒดํ•จ.
  • ** ํ•ต์‹ฌ์€ B tree ์™€ ์‚ญ์ œ ์—ฐ์‚ฐ๊ณผ ์‚ฝ์ž… ์—ฐ์‚ฐ์ด ๋™์ผํ•˜๋‹ค๋Š” ์˜๋ฏธ์ž„. **

โœ… 2. 2-3-4 ํŠธ๋ฆฌ

(1) 2-3-4 ํŠธ๋ฆฌ - ์ •์˜

  • 2-3 ํŠธ๋ฆฌ๋ฅผ ํ™•์žฅํ•œ ๊ฐœ๋…์œผ๋กœ ๋‹จ์ˆœํžˆ 4๊ฐœ์˜ ์ž์‹์„ ๊ฐ€์ง„ 4-๋…ธ๋“œ๋ฅผ ํ—ˆ์šฉํ•˜๋Š” ํƒ์ƒ‰ ํŠธ๋ฆฌ์ž„.

(2) 2-3-4 ํŠธ๋ฆฌ - ์กฐ๊ฑด

  • ๋‹จ์ˆœํžˆ lkey ๋Š” mkey ๋ณด๋‹ค ์ž‘์•„์•ผ ํ•œ๋‹ค. ( ์ด์ง„ ํƒ์ƒ‰ ํŠธ๋ฆฌ ๊ทœ์น™๊ณผ ๋™์ผํ•จ )
  • ๋‚˜๋จธ์ง€ ๊ทœ์น™๋„ ๋งˆ์ฐฌ๊ฐ€์ง€์ž„.

โœ… 3. ๋ ˆ๋“œ ๋ธ”๋ž™ ํŠธ๋ฆฌ

(1) Red-Black Tree - ์ •์˜

  • Red-Black Tree ๋Š” 2-3-4 ํŠธ๋ฆฌ๋ฅผ ํšจ์œจ์ ์ธ ๊ธฐ์–ต ์žฅ์†Œ ์‚ฌ์šฉ์„ ์œ„ํ•˜์—ฌ ์ด์ง„ํ™”ํ•œ ์ด์ง„ํŠธ๋ฆฌ ํ˜•ํƒœ์ด๋‹ค.
  • ์ด์ง„ ํƒ์ƒ‰ ํŠธ๋ฆฌ(BST)์˜ ํ•œ์ข…๋ฅ˜์ด๋ฉฐ, ์Šค์Šค๋กœ ๊ท ํ˜•(blancing) ์žก๋Š” ํŠธ๋ฆฌ์ด๋ฉฐ, BST์˜ worst case์˜ ๋‹จ์ ์„ ๊ฐœ์„ ํ•œ๋‹ค.
  • ** ์‰ฝ๊ฒŒ๋งํ•ด, 2-3-4 ํŠธ๋ฆฌ์˜ ๊ท ํ˜• ๋ณด์žฅ์— ๋Œ€ํ•œ ์žฅ์ ๊ณผ ์ด์ง„ ํŠธ๋ฆฌ ๊ตฌ์กฐ์˜ 2๊ฐœ์˜ ์ž์‹ ๋…ธ๋“œ๋ฅผ ๊ฐ€์ง€๋Š” ๋‹จ์ˆœ์„ฑ ๋ฐ ํšจ์œจ์ ์ธ ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ ๋‘ ๊ฐ€์ง€๋ฅผ ํ™œ์šฉํ•ด์„œ ๋งŒ๋“ค์–ด์ง„ ํŠธ๋ฆฌ๊ฐ€ Red-Black Tree ์ด๋‹ค. ( ์ด์ง„ ํƒ์ƒ‰ ํŠธ๋ฆฌ ํŽธํ–ฅ ํŠธ๋ฆฌ๋ฅผ ๋ฐฉ์ง€ ํ•  ์ˆ˜ ์žˆ์Œ. )**
  • ์ฆ‰, 2-3-4 ๋ฉ€ํ‹ฐ์›จ์ด ๊ตฌ์กฐ๋Š” ๋ฒ„๋ฆฌ๊ณ  ๊ท ํ˜•์„ ์œ ์ง€ํ•˜๋Š” ๋…ผ๋ฆฌ์ ์ธ ๊ทœ์น™๋งŒ ๊ฐ€์ ธ์™€์„œ ์ด๋ฅผ ์ด์ง„ ํƒ์ƒ‰ ํŠธ๋ฆฌ ๊ตฌ์กฐ์— ์ ์šฉํ•œ ๊ฒƒ์ž„.
  • 2-3-4 ํŠธ๋ฆฌ์˜ ๋…ธ๋“œ์˜ ๋นˆ ๊ณต๊ฐ„์ด ์ƒ๊ธฐ๋Š”๋ฐ ์ด๊ฑธ ์ด์ง„ ํƒ์ƒ‰ ํŠธ๋ฆฌ ๊ตฌ์กฐ๋กœ ๋ณ€๊ฒฝํ•จ์œผ๋กœ์จ ๋นˆ ๊ณต๊ฐ„์ด ์—†์–ด์ง€๊ฒŒ ๋จ.
  • ** Red-Black Tree ํƒ์ƒ‰ ๋ฐฉ๋ฒ•์€ ๋ณดํ†ต์˜ ์ด์ง„ ํƒ์ƒ‰ ํŠธ๋ฆฌ์˜ ํƒ์ƒ‰ ์•Œ๊ณ ๋ฆฌ์ฆ˜๊ณผ ๋™์ผํ•จ. **

(2) Red-Black Tree - ์†์„ฑ

[ Red-Black Tree ์†์„ฑ ]
1. ๋ชจ๋“  ๋…ธ๋“œ๋Š” red ํ˜น์€ black 
2. ๋ฃจํŠธ ๋…ธ๋“œ๋Š” ํ•ญ์ƒ black
3. ๋ชจ๋“  nil(leaf) ๋…ธ๋“œ๋Š” black
4. red์˜ ์ž๋…€๋“ค์€ ๋ชจ๋‘ black
( ์ฆ‰, red ๊ฐ€ ์—ฐ์†์ ์œผ๋กœ ์กด์žฌํ•  ์ˆ˜ ์—†๋‹ค๋Š” ์˜๋ฏธ์ž„. )

[ nil ๋…ธ๋“œ๋ž€? ]
- ์กด์žฌํ•˜์ง€ ์•Š์Œ์„ ์˜๋ฏธํ•˜๋Š” ๋…ธ๋“œ์ž„
- ์ž๋…€๊ฐ€ ์—†์„ ๋•Œ ์ž๋…€๋ฅผ nil ๋…ธ๋“œ๋กœ ํ‘œ๊ธฐ
- ๊ฐ’์ด ์žˆ๋Š” ๋…ธ๋“œ์™€ ๋™๋“ฑํ•˜๊ฒŒ ์ทจ๊ธ‰์ด ๋จ.
- ์ฆ‰, Red-Black Tree ์—์„œ ๋ชจ๋“  leaf ๋…ธ๋“œ๋Š” nil ๋…ธ๋“œ๊ฐ€ ๋จ.

 

'๐ŸŽ“๋ฐฉ์†กํ†ต์‹ ๋Œ€ํ•™๊ต > ๐Ÿ”ข์ž๋ฃŒ๊ตฌ์กฐ' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[์ž๋ฃŒ๊ตฌ์กฐ] 14๊ฐ• - ๊ทธ๋ž˜ํ”„(1)  (0) 2025.12.10
[์ž๋ฃŒ๊ตฌ์กฐ] 12๊ฐ• - ๋ฉ€ํ‹ฐ์›จ์ด ํƒ์ƒ‰ ํŠธ๋ฆฌ(1)  (0) 2025.11.22
[์ž๋ฃŒ๊ตฌ์กฐ] 11๊ฐ• - BST, Splay, AVL, BB  (0) 2025.11.20
[์ž๋ฃŒ๊ตฌ์กฐ] 9๊ฐ• - ํž™  (0) 2025.11.13
[์ž๋ฃŒ๊ตฌ์กฐ] 8๊ฐ• - ์Šค๋ ˆ๋“œํŠธ๋ฆฌ  (0) 2025.10.23
'๐ŸŽ“๋ฐฉ์†กํ†ต์‹ ๋Œ€ํ•™๊ต/๐Ÿ”ข์ž๋ฃŒ๊ตฌ์กฐ' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • [์ž๋ฃŒ๊ตฌ์กฐ] 14๊ฐ• - ๊ทธ๋ž˜ํ”„(1)
  • [์ž๋ฃŒ๊ตฌ์กฐ] 12๊ฐ• - ๋ฉ€ํ‹ฐ์›จ์ด ํƒ์ƒ‰ ํŠธ๋ฆฌ(1)
  • [์ž๋ฃŒ๊ตฌ์กฐ] 11๊ฐ• - BST, Splay, AVL, BB
  • [์ž๋ฃŒ๊ตฌ์กฐ] 9๊ฐ• - ํž™
junbin2
junbin2
java.lang.NullPointerException
  • junbin2
    bin's Development Diary
    junbin2
  • ์ „์ฒด
    ์˜ค๋Š˜
    ์–ด์ œ
    • ์ „์ฒด๋ณด๊ธฐ (195) N
      • ๐ŸŽ“๋ฐฉ์†กํ†ต์‹ ๋Œ€ํ•™๊ต (51) N
        • โš™๏ธ์ปดํ“จํ„ฐ์˜ ์ดํ•ด (11)
        • ๐Ÿ’ป์ปดํ“จํ„ฐ๊ณผํ•™ ๊ฐœ๋ก  (15)
        • ๐Ÿ”ข์ž๋ฃŒ๊ตฌ์กฐ (13) N
        • ๐ŸŒ์œ ๋น„์ฟผํ„ฐ์Šค ์ปดํ“จํŒ… (11)
        • ๐Ÿ–ฅ๏ธ์ปดํ“จํ„ฐ๊ณผํ•™๊ณผ (1)
      • ๐Ÿ› ๏ธBackend (68)
        • ๐Ÿ“š๋ฐฑ์—”๋“œ ๊ณต๋ถ€ (4)
        • โ˜•Java (23)
        • ๐ŸŒณSpring (13)
        • โš™๏ธC (12)
        • โšกPython (13)
        • JavaScript (1)
        • ๐Ÿ›ข๏ธDatabase (0)
        • Algorithm Problem Solving (2)
      • ๐ŸŒ Network (7)
        • ๐Ÿ“œHTTP (7)
      • ๐Ÿš€DevOps (1)
      • โ›บ์ŠคํŒŒ๋ฅดํƒ€์ฝ”๋”ฉํด๋Ÿฝ (64)
      • ์ •๋ณด (2)
      • ์ •๋ฆฌ๊ฐ€ ํ•„์š”ํ•œ ๊ธ€ (2)
  • ๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

    • ํ™ˆ
    • ํƒœ๊ทธ
    • ๋ฐฉ๋ช…๋ก
  • ๋งํฌ

    • GitHub
  • ๊ณต์ง€์‚ฌํ•ญ

  • ์ธ๊ธฐ ๊ธ€

  • ํƒœ๊ทธ

    ํ•จ์ˆ˜
    ์ปดํ“จํ„ฐ์˜ ์ดํ•ด
    ๋ฐฉํ†ต๋Œ€
    ์ž…์ถœ๋ ฅ
    ์ž๋ฐ”
    ์œ ๋น„์ฟผํ„ฐ์Šค
    ์œ ๋น„์ฟผํ„ฐ์Šค ์ปดํ“จํŒ…๊ฐœ๋ก 
    Python
    Java
    C
    spring
    ์ž๋ฃŒ๊ตฌ์กฐ
    ์ปดํ“จํ„ฐ๊ณผํ•™ ๊ฐœ๋ก 
    ๋ฐฐ์—ด
    ํŒŒ์ด์ฌ
    ๋ฐฉ์†ก๋Œ€
    C ์–ธ์–ด
    C์–ธ์–ด
    ์ปดํŒŒ์ผ๋Ÿฌ
    ๋ฐฉ์†กํ†ต์‹ ๋Œ€ํ•™๊ต
  • ์ตœ๊ทผ ๋Œ“๊ธ€

  • ์ตœ๊ทผ ๊ธ€

  • hELLOยท Designed By์ •์ƒ์šฐ.v4.10.1
junbin2
[์ž๋ฃŒ๊ตฌ์กฐ] 13๊ฐ• - ๋ฉ€ํ‹ฐ์›จ์ด ํƒ์ƒ‰ ํŠธ๋ฆฌ(2)
์ƒ๋‹จ์œผ๋กœ

ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”