ํฐ์คํ ๋ฆฌ ๋ทฐ
2-3-4 ํธ๋ฆฌ๋?
ํ์ํธ๋ฆฌ ์ค ํ๋๋ก, ์ด์ง ํธ๋ฆฌ๊ฐ ์๋๋ค. ์ฆ, ์์ ๋ ธ๋๊ฐ 2๊ฐ๋ณด๋ค ๋ง์ ์ ์๋ค.
ํน์ง์ผ๋ก
1. ์ด๋ฆ์ฒ๋ผ ์์ ๋ ธ๋์ ๊ฐ์๋ 2๊ฐ ๋๋ 3๊ฐ ๋๋ 4๊ฐ๋ฅผ ๊ฐ์ง ์ ์๋ค. (์ฆ, ์ต์ 2๊ฐ ~ ์ต๋ 4๊ฐ)
2. ๋ชจ๋ leaf ๋ ธ๋๊ฐ ๊ฐ์ level์ ์กด์ฌํ๋ค.
3. ์ฝ์ ์, leaf ๋ ธ๋์ ์ฝ์ ํ๋ค.
์ฝ์
์ถ๊ฐํ key๊ฐ root๋ถํฐ leaf ๋ ธ๋๊น์ง ๋ด๋ ค๊ฐ๋ฉด์, 4-๋ ธ๋์ด๋ฉด splitํ๋ฉด์ ๋ด๋ ค๊ฐ๋ค.
splitํ ๋ ์ค๊ฐ ๊ฐ์ ๋ถ๋ชจ ๋ ธ๋๋ก ๋ฌด์กฐ๊ฑด ์ฌ๋ผ๊ฐ ์ ์๋๋ฐ, ๊ทธ ์ด์ ๋ key๊ฐ ๋ด๋ ค์ค๋ฉด์ 4-๋ ธ๋์ธ ๊ฒฝ์ฐ split์ ์ด๋ฏธ ํด๋จ๊ธฐ ๋๋ฌธ์ด๋ค.
splitํ๋๋ฐ O(1)์ด ๊ฑธ๋ฆฌ๊ณ ,
์ต์ ์ ๊ฒฝ์ฐ leaf๋ ธ๋๊น์ง ๋ด๋ ค๊ฐ๋ฉด์ ๋งค๋ฒ split ํด์ผํ๋ฏ๋ก(log n๋ฒ), ์ฝ์ ์์ ์๊ฐ๋ณต์ก๋๋ O(logn)์ด๋ค.
์ญ์
2-3-4 ํธ๋ฆฌ์์๋ ์ญ์ ์์ ํน๋ณํ ์์ ์ด ์งํ๋๋ค.
์ญ์ ํ๋ ค๋ key๊ฐ์ด root๋ถํฐ leaf ๋ ธ๋๊น์ง ๋ด๋ ค๊ฐ๋ฉด์, 2-๋ ธ๋์ธ ๊ฒฝ์ฐ => 3-๋ ธ๋ ๋๋ 4-๋ ธ๋๊ฐ ๋๋๋ก ๋ง๋ค์ด์ค๋ค.
(underflow๊ฐ ๋ฐ์ํ ์ ์๊ธฐ ๋๋ฌธ์)
์๋ <๊ทธ๋ฆผ 1>์์ root์์ leaf๋ก ๋ด๋ ค๊ฐ๋ฉด์ [30] ์ด 2-๋ ธ๋์ธ ๊ฒ์ ๋ฐ๊ฒฌํ๋ค.
๊ทธ๋ ๋ค๋ฉด ํ์ ๋ ธ๋ ์ค ๊ฟ์ค ์ ์๋ 3-๋ ธ๋์ธ [10,15]์์ ๋น๋ ค์ค๊ฒ ๋๋ค.
์ด ๋ ํ์ ๋ ธ๋์ key๋ ๋ถ๋ชจ ๋ ธ๋๋ก ์ฌ๋ผ๊ฐ๊ณ , ๋ถ๋ชจ๋ ธ๋์ key ๊ฐ์ด [30] ๋ ธ๋๋ก ๋ด๋ ค์ค๊ฒ ๋๋ค. (์๋ ๊ทธ๋ฆผ์์ 20์ด ๋ด๋ ค์ด)
(์ด๋ ๊ฒ ํ์ ๋ ธ๋์ ๊ฐ์ด ์ค์ง ๋ชปํ๋ ์ด์ ๋ [30] ๋ ธ๋์์๋ 20๋ณด๋ค ํฐ ๊ฐ์ด ์์ผํ๋ ํธ๋ฆฌ์ ์ํฉ๋๋ฌธ์ด๋ค. ํ์ํ ๋ ๋ฒ์๋ก ์ฐพ๋ ๊ฒ์ ์๊ฐํ๋ฉด ์ดํดํ๊ธฐ ์ฝ๋ค!)
์๋ <๊ทธ๋ฆผ 2>์์๋ ํ์ ๋ ธ๋๋ ํํธ์ด ๋์ง ์์ ๊ฒฝ์ฐ, ๋ถ๋ชจ ๋ ธ๋์ key๊ฐ๊ณผ 2-๋ ธ๋์ธ key๊ฐ, ํ์ ๋ ธ๋์ key๊ฐ์ด ๋ณํฉ๋๋ ๋ชจ์ต์ ๋ณด์ฌ์ค๋ค.
์ถ๊ฐ๋ก ์ผ๋ํ ์ ์, root ๋ ธ๋์ธ ๊ฒฝ์ฐ 2-๋ ธ๋์ฌ๋ ์์ ์์ ๋ค์ ์ํํ์ง ์๊ณ ๋์ด๊ฐ๋ค.
์๋ ๊ทธ๋ฆผ์์๋ root ๋ ธ๋๋ ๋์ด๊ฐ๊ณ , [30]์ด 2-๋ ธ๋์ธ ์ํฉ์ด๊ณ + ํ์ ๋ ธ๋๊ฐ ๊ฟ์ค ํ ํธ์ด ์๋๋ฏ๋ก -> ๋ณํฉ์ด ์ผ์ด๋ ์ํฉ์ด๋ค.
1) ์ญ์ ํ๊ณ ์ ํ๋ key๊ฐ์ด leaf ๋ ธ๋๊ฐ ์๋ ๊ฒฝ์ฐ
ํด๋น key ๊ฐ์ predecessor(key๋ณด๋ค ์์ ๊ฐ์ค์ ๊ฐ์ฅ ํฐ ๊ฐ) ๋๋ successor(key๋ณด๋ค ํฐ ๊ฐ์ค์ ๊ฐ์ฅ ์์๊ฐ)๊ณผ ์๋ฆฌ๋ฅผ ๋ฐ๊พผ ํ์ ์ญ์ ํ๋ค.
(์ฐธ๊ณ ๋ก, predecessor์ successor๋ ํญ์ leaf ๋ ธ๋์ ์์นํด์๋ค)
2) leaf ๋ ธ๋๋ฅผ ์ญ์ ํ๋ค.
2-๋ ธ๋๋ฅผ 3-๋ ธ๋ ๋๋ 4-๋ ธ๋๋ก ๋ฐ๊ฟ์ฃผ๋ ์์ ์ ํ๋๋ฐ O(1)์ด ๊ฑธ๋ฆฌ๊ณ ,
์ต์ ์ ๊ฒฝ์ฐ leaf๋ ธ๋๊น์ง ๋ด๋ ค๊ฐ๋ฉด์ ๋งค๋ฒ ํด์ผํ๋ฏ๋ก(log n๋ฒ), ์ฝ์ ์์ ์๊ฐ๋ณต์ก๋๋ O(logn)์ด๋ค.
์ ๋ฆฌํ๋ฉด, ์ฝ์ ๊ณผ ์ญ์ ๋ชจ๋ log(n)์ ์๊ฐ๋ณต์ก๋๋ฅผ ๊ฐ์ง๋ค.
์ ๋ฆฌ ๋ด์ฉ ๋ฐ ์ปจํ ์ธ ์ถ์ฒ
https://www.youtube.com/watch?v=ad3tnpLCxYk&t=1585s
'๐ง๐ปโ๐ป ์๊ณ ๋ฆฌ์ฆ > ํ์ ํธ๋ฆฌ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ํ์ ํธ๋ฆฌ] ํ ์ด๋ ์ดํดํ๋ B-ํธ๋ฆฌ (0) | 2022.12.02 |
---|
- Total
- Today
- Yesterday
- DOM
- ๋ธ๋ผ์ฐ์
- github
- ์๋ฃ๊ตฌ์กฐ
- React Query
- ๋ฆฌ์กํธ
- Context API
- BOJ
- mdn
- ํ์ด์ฌ
- CSS
- DB
- ์๊ณ ๋ฆฌ์ฆ
- error
- zustand
- ์ ๋ ฌ
- ๋ฐ์ดํฐ๋ฒ ์ด์ค
- git
- react
- ์๋ฐ์คํฌ๋ฆฝํธ
- Browser
- state
- ํจ์
- ์๋ฌ
- ๊ทธ๋ํ
- JavaScript
- Python
- Component
- useState
- leetcode
์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |