-
Notifications
You must be signed in to change notification settings - Fork 5
B Tree
์ด๋ฏธ์ง๊ฐ ๊นจ์ง๋ ์๋ notion๋งํฌ๋ก ์ด๋ ๋ฐ๋
https://teal-poultry-405.notion.site/B-B-cde90e43940f42ed95242dfab453b8fd
: Bํธ๋ฆฌ๋ Binary Tree์์ ๋ฐ์ ๋์ด ๋ชจ๋ ๋ฆฌํ๋ ธ๋๋ค์ด ๊ฐ์ ๋ ๋ฒจ์ ๊ฐ์ง ์ ์๋๋ก ์๋์ผ๋ก ๋ฒจ๋ฐ์ค๋ฅผ ๋ง์ถ๋ ํธ๋ฆฌ์ด๋ค. ์ ๋ ฌ๋ ์์๋ฅผ ๋ณด์ฅํ๊ณ , ๋ฉํฐ๋ ๋ฒจ ์ธ๋ฑ์ฑ์ ํตํด ๋น ๋ฅธ ๊ฒ์์ ํ ์ ์๊ธฐ ๋๋ฌธ์ DB์์ ์ฌ์ฉํ๋ ์๋ฃ๊ตฌ์กฐ์ด๋ค.
์ต๋ M๊ฐ์ ์์์ ๊ฐ์ง ์ ์๋ Bํธ๋ฆฌ๋ฅผ M์ฐจ Bํธ๋ฆฌ๋ผ๊ณ ํ๋ค.
- ๋ ธ๋๋ ์ต๋ M๊ฐ๋ถํฐ M/2๊ฐ ๊น์ง์ ์์์ ๊ฐ์ง ์ ์๋ค.
- ๋ ธ๋์๋ ์ต๋ M - 1 ๊ฐ ๋ถํฐ [M/2] - 1 ๊ฐ์ ํค๊ฐ ํฌํจ๋ ์ ์๋ค.
- ๋
ธ๋์ ํค๊ฐ x๊ฐ๋ผ๋ฉด ์์์ ์๋ x + 1 ๊ฐ์ด๋ค
- ํฌ์ธํฐ๊ฐ ์๊ณผ ๋ค์ ์ถ๊ฐ๋ก ๋ถ๊ธฐ ๋๋ฌธ
- ์ต์์ฐจ์๋ ์์ ์์ ํํ ๊ฐ์ด๋ฉฐ, ์ต์์ฐจ์๊ฐ t๋ผ๋ฉด M = 2t - 1์ ๋ง์กฑํ๋ค (์ต์์ฐจ์ t๊ฐ 2๋ผ๋ฉด 3์ฐจ Bํธ๋ฆฌ์ด๋ฉฐ, Key์ ํํ์ 1๊ฐ์ด๋ค)
- ๊ฐ key์ ์ ์ชฝ ํฌ์ธํฐ๋, ํด๋น key ๋ณด๋ค ์์ key๋ฅผ ๊ฐ๋ฅดํค๋ ํฌ์ธํฐ๊ฐ ์กด์ฌํ๋ค.
- ๊ฐ key์ ๋ค ์ชฝ ํฌ์ธํฐ๋, ํด๋น key ๋ณด๋ค ํฐ key๋ฅผ ๊ฐ๋ฅดํค๋ ํฌ์ธํฐ๊ฐ ์กด์ฌํ๋ค.
- key๋ค์ ๋ ธ๋ ์์์ ํญ์ ์ ๋ ฌ๋ ๊ฐ์ ๊ฐ์ง๋ค.
๊ฒ์ํ๊ณ ์ ํ๋ ๊ฐ์ k ๋ผ๊ณ ๊ฐ์ ํ๋ค๋ฉด,
- ๋ฃจํธ ๋
ธ๋์์ ์์ํ์ฌ key๋ค์ ์ํํ๋ฉฐ k๊ฐ์ ๋ฒ์๋ฅผ ์ฐพ๋๋ค
- k์ ๊ฐ์ key๋ฅผ ์ฐพ์๋ค๋ฉด ๊ฒ์์ ์ข ๋ฃํ๋ค.
- ๊ฒ์ํ๋ key๋ค์ ๋์๊ด๊ณ๋ฅผ ๋น๊ตํ์ฌ k๊ฐ์ด ํด๋นํ๋ ์์์ผ๋ก ๋ด๋ ค๊ฐ๋ค
- ๋ฆฌํ๋ ธ๋์ ๋๋ฌํ ๋ ๊น์ง 1๋ฒ์ ๋ฐ๋ณตํ๋ค, ๋ง์ฝ ๋ฆฌํ๋ ธ๋์ ๋๋ฌํ์ฌ k์ ๊ฐ์ key๊ฐ ์์ ๊ฒฝ์ฐ, ๊ฒ์์ ์คํจํ๋ค.
์์ ์์์์ ๋ง์ฝ k ๊ฐ์ด 18์ด๋ผ๊ณ ํ๋ค๋ฉด,
- root์ ์ฒซ๋ฒ์งธ key๊ฐ(10)์ ํ์ธํ๋ค
- k(18)์ 10๋ณด๋ค ํฌ๋ฏ๋ก, ํด๋น key๋ฅผ ๋์ด์๊ณ , ๋ค์ key(20)๊ณผ ๋น๊ตํ๋ค.
- 18์ 20๋ณด๋ค ์์ผ๋ฏ๋ก 10๊ณผ 20์ฌ์ด์ ์๋ pointer์ ์์๋ ธ๋๋ก ๋ด๋ ค๊ฐ๋ค.
- ์ดํ ๋ค์ 1๋ฒ์์ ํ๋ ๊ฒ์ฒ๋ผ, ์ฒซ๋ฒ์งธ key์ ๋น๊ตํ๋ค.
- 18์ 14๋ณด๋ค ํฌ๊ธฐ์ ๋์ด๊ฐ๋ฉฐ, ๋ง์ฐฌ๊ฐ์ง๋ก 17๋ณด๋ค ํฌ๊ธฐ์ ๋์ด๊ฐ์ ๋งจ ์ค๋ฅธ์ชฝ ํฌ์ธํฐ์ ์์๋ ธ๋๋ก ๊ฐ๋ค.
- 18 ๊ฒ์ ์ฑ๊ณต
- ์ ์ ํ ๋ฆฌํ๋ ธ๋๋ฅผ ๊ฒ์ํ๋ค
- ํ์ํ ๊ฒฝ์ฐ ๋ ธ๋๋ฅผ ๋ถํ ํ๋ค
- ํธ๋ฆฌ๊ฐ ๋น์ด์์ผ๋ฉด, ๋ฃจํธ๋ ธ๋๋ฅผ ํ ๋นํ๊ณ k๋ฅผ ์ฝ์ ํ๋ค. ๋ง์ผ ๋ฃจํธ๋ ธ๋๊ฐ ๊ฐ๋ ์ฐผ๋ค๋ฉด, ๋ ธ๋๋ฅผ ๋ถํ ํ๊ณ ๋ฆฌํ๋ ธ๋๊ฐ ์์ฑ๋๋ค
- ์ฝ์ ํ๊ธฐ์ ์ ์ ํ ๋ฆฌํ๋ ธ๋๋ฅผ ์ฐพ์ k๋ฅผ ์ฝ์ ํ๋ค. k๊ฐ์ ๊ฒ์ ํ๋ ๋ฐฉ๋ฒ๊ณผ ๋์ผํ ๋ฐฉ๋ฒ์ผ๋ก ์ฝ์ ํ ๋ฆฌํ๋ ธ๋๋ฅผ ์ฐพ๋๋ค.
9๋ฅผ ์ฝ์ ํ๋ ๊ฒ์ ์์๋ก ํ๋ค.
๋ธ๋ก๊ทธ์ ์์๊ฐ ์๋ ์ข๊ธฐ ๋๋ฌธ์ ๊ทธ๋๋ก ๊ฐ์ง๊ณ ์จ๋ค.
๊ฒ์๋ฐฉ๋ฒ๊ณผ ๋์ผํ๊ฒ ์งํํ๊ณ , ๋ฆฌํ ๋ ธ๋์ ๋๋ฌํ๋ฉด ํด๋นํ๋ ์์น์ ์ฝ์ ํด์ค๋ค.
- ๋ฆฌํ๋ ธ๋์ key๊ฐ ๊ฐ๋ ์ฐฌ ๊ฒฝ์ฐ, ๋ ธ๋๋ฅผ ๋ถํ ํด์ผ ํ๋ค.
- ์ค๋ฆ์ฐจ์์ผ๋ก ์์์ ํ๋ ๋ฐฉ๋ฒ์ผ๋ก ์์๋ฅผ ์ฝ์ ํ๋ค. ์ด๋ ๋ ธ๋์ ๋ด์ ์ ์๋ ์ต๋ Key๊ฐ์๊ฐ ์ด๊ณผํ๋ฉด
- ์ค์๊ฐ์์ ๋ถํ ์ ์ํํ๋ค. ์ค์๊ฐ์ ๋ถ๋ชจ๋
ธ๋๋ก ๋ณํฉํ๊ฑฐ๋ ์๋ก ์์ฑ๋๋ค.
- ์ผ์ชฝ ํค๋ค์ ์ผ์ชฝ ์์์ผ๋ก, ์ค๋ฅธ์ชฝ ํค๋ค์, ์ค๋ฅธ์ชฝ ์์์ผ๋ก ๋ถํ
- ๋ํ ํด๋น ๋ถ๋ชจ๋ ธ๋๋ฅผ ๊ฒ์ฌํด์ ๋ ๋ค์ ๊ฐ๋ ์ฐผ๋ค๋ฉด, ๋ถ๋ชจ๋ ธ๋๋ 1,2 ๊ณผ์ ์ ๋ฐ๋ณตํ๋ค.
case 1์์์ ๋๊ฐ์ด ๊ฒ์ํ๋ฉฐ ๋ฆฌํ๋ ธ๋์ ๋๋ฌํ ๋ ๊น์ง ๋์๊ฐ๋ค.
์ดํ ๋ฆฌํ๋ ธ๋์ ๋๋ฌํ๋ฉด, ํด๋นํ๋ ์์น์ ์ฝ์ ํ๊ณ , ์ดํ ์ค์๊ฐ์ ์ฐพ๋๋ค (12)
์ดํ ๋ง์ฐฌ๊ฐ์ง๋ก ๋ฆฌํ๋ ธ๋์ ๋ถ๋ชจ์ธ 12, 14, 17์ด ๋ค์ด์๋ ๋ ธ๋๋ ์ค์๊ฐ์ ๊ธฐ์ค์ผ๋ก ๋ถํ ์ ์งํํ๋ค.
๋ ๋ง์ฐฌ๊ฐ์ง๋ก ๋ถ๋ชจ๋ ธ๋์ ์ต๋ key์ ๊ฐ์๊ฐ ์ด๊ณผ๋์์ผ๋ฏ๋ก, ๋ถํ ์ ์งํํ๋ค.
๋ค์๊ณผ ๊ฐ์ด depth๊ฐ ํ๋ ์ฆ๊ฐํ 2์ฐจ Bํธ๋ฆฌ๊ฐ ์์ฑ๋์๋ค.
- ์ญ์ ํ ํค๊ฐ ์๋ ๋ ธ๋ ๊ฒ์
- ํค ์ญ์
- ํธ๋ฆฌ ๊ท ํ ์กฐ์
-
inorder predecessor
ย : ๋ ธ๋์ย ์ผ์ชฝ ์์์์ ๊ฐ์ฅย ํฐ key -
inorder successor
ย : ๋ ธ๋์ย ์ค๋ฅธ์ชฝ ์์์์ ๊ฐ์ฅย ์์ key - ๋ถ๋ชจkey: ๋ถ๋ชจ๋ ธ๋์ key๋ค ์ค ์ผ์ชฝ ์์์ผ๋ก ๋ณธ์ธ ๋ ธ๋๋ฅผ ๊ฐ์ง๊ณ ์๋ key๊ฐ์ ๋๋ค. ๋จ, ๋ง์ง๋ง ์์๋ ธ๋์ ๊ฒฝ์ฐ์๋ ๋ถ๋ชจ์ ๋ง์ง๋ง key์ ๋๋ค.
-
1.1: ํ์ฌ ๋ ธ๋์ key ๊ฐ์๊ฐ ์ต์ key ๊ฐ์๋ณด๋ค ํด ๋
- ํธ๋ฆฌ ๊ท ํ ์กฐ์ ํ ํ์ ์์ด ๊ทธ๋ฅ ์ญ์
-
1.2: ์ญ์ ํ ์ ์ต์ key ๊ฐ์๋ณด๋ค ์์์ง๊ณ , ์ผ์ชฝ ๋๋ ์ค๋ฅธ์ชฝ ํ์ ๋ ธ๋์ key๊ฐ ์ต์ key ๊ฐ์ ์ด์์ผ ๋
-
๋ถ๋ชจ key ๊ฐ์ผ๋ก k๋ฅผ ๋์ฒดํ๋ค.
-
์ดํ ํ์ ๋ ธ๋๊ฐ ์ผ์ชฝ ํ์ ๋ผ๋ฉด ๊ฐ์ฅ ํฐ ๊ฐ์, ์ค๋ฅธ์ชฝ ํ์ ๋ผ๋ฉด ๊ฐ์ฅ ์์ ๊ฐ์ ๋ถ๋ชจ key๋ก ๋์ฒดํ๋ค (ํธ๋ฆฌ ๊ท ํ ์กฐ์ )
-
๋ค์๊ณผ ๊ฐ์ ๋ฐฉ๋ฒ์ผ๋ก, ์ต์ ๋ ธ๋์ ๊ฐ์๋ฅผ ๋ง์กฑ์ํค๋ฉฐ Bํธ๋ฆฌ์ ๊ท ํ์ ์ ์ง์ํจ๋ค.
- 1.3 ์ผ์ชฝ, ์ค๋ฅธ์ชฝ ํ์ ๋
ธ๋์ key๊ฐ ์ต์ key ๊ฐ์์ด๊ณ , ๋ถ๋ชจ๋
ธ๋์ key๊ฐ ์ต์๊ฐ์ ์ด์์ผ ๋
- k๋ฅผ ์ญ์ ํ ํ, ๋ถ๋ชจ Key๋ฅผ ํ์ ๋ ธ๋์ ๋ณํฉํ๋ค (๋ถ๋ชจ๋ ธ๋๋ ์ค์ด๋ค๊ฒ ๋๋ค).
- case 1.4) ์์ ๊ณผ ํ์ , ๋ถ๋ชจ ๋
ธ๋์ key ๊ฐ์๊ฐ ๋ชจ๋ ์ต์์ผ ๋
- ํธ๋ฆฌ์ ๋์ด๊ฐ ์ค์ด๋๋ ๊ฒฝ์ฐ์ด๋ฏ๋ก ์ฌ ๊ตฌ์กฐํ ๊ณผ์ ์ด ์ผ์ด๋๋ค.
Case 2: ์ญ์ ํ key K๊ฐ ๋ด๋ถ ๋ ธ๋์ ์๊ณ , ๋ ธ๋๋ ์์์ ํค๊ฐ ์ต์ ํค ์๋ณด๋ค ๋ง์ ๊ฒฝ์ฐ
์ฆ ์ญ์ ํ key๊ฐ ๋ฆฌํ๋ ธ๋๊ฐ ์๋๋ฉฐ, ํด๋น ๋ ธ๋์ ๊ทธ ์์์ ํค๊ฐ ์ต์ ํค์๋ณด๋ค ๋ง์๊ฒฝ์ฐ
- ํ์ฌ ๋
ธ๋์ย
inorder predecessor
ย ๋๋ยinorder successor
์ย k์ ์๋ฆฌ๋ฅผ ๋ฐ๊ฟ๋๋ค. - ๋ฆฌํ๋ ธ๋์ย k๋ฅผ ์ญ์ ํ๊ฒ ๋๋ฉด, ๋ฆฌํ๋ ธ๋๊ฐ ์ญ์ ๋์์ ๋์ ์กฐ๊ฑด์ผ๋ก ๋ณํฉ๋๋ค. ์ญ์ ํ ๋ฆฌํ๋ ธ๋์ ๋ํด์ case 1 ์กฐ๊ฑด์ผ๋ก ์ด๋ํฉ๋๋ค.
์ดํ 10์ ๋ ธ๋๊ฐ ์ญ์ ๋์์ ๋์ ์กฐ๊ฑด์ผ๋ก ๋ง์ฝ ํธ๋ฆฌ ๊ท ํ์ด ํ์ํ ๊ฒฝ์ฐ ์งํํ๋ค.
Case 3 : ์ญ์ ํ key K ๊ฐ ๋ด๋ถ ๋ ธ๋์ ์๊ณ , ๋ ธ๋์ key ๊ฐ์๊ฐ ์ต์ key ๊ฐ์๋งํผ, ๋ ธ๋์ ์์ key ๊ฐ์๋ ๋ชจ๋ ์ต์ key ๊ฐ์์ธ ๊ฒฝ์ฐ
โ key๋ฅผ ์ญ์ ํ๋ฉด ํธ๋ฆฌ์ ๋์ด๊ฐ ์ค์ด๋ค์ด ์ฌ๊ตฌ์กฐํ๊ฐ ์ผ์ด๋์ผ ํจ
-
k๋ฅผ ์ญ์ ํ๊ณ , k์ ์์ชฝ ์์์ ๋ณํฉํ์ฌ ํ๋์ ๋ ธ๋๋ฅผ ๋ง๋ ๋ค.
-
k์ ๋ถ๋ชจ key๋ฅผ ์ธ์ ํ ํ์ ๋ ธ๋์ ๋ถ์ธ๋ค. ์ดํ 1์์ ๋ณํฉํ๋ ๋ ธ๋๋ฅผ ์์๋ ธ๋๋ก ์ค์ ํ๋ค.
-
-1 ์๋ก ๊ตฌ์ฑ๋ ์ธ์ ํ์ ๋ ธ๋์์ ๋ณํฉ ํ ์ต๋ key์ ๊ฐ์๋ฅผ ๋๊ฒผ๋ค๋ฉด, ์ฝ์ ์ฐ์ฐ์์ ํ์๋ ๋ ธ๋ ๋ถํ ๊ณผ์ ์ ์ํํ๋ค.
-
-2 ํ์ ๋ ธ๋๊ฐ ์๋ก ๊ตฌ์ฑ๋์ด๋ ๋ถ๋ชจ๋ ธ๋์ ๊ฐ์๊ฐ ์ต์ key์ ๊ฐ์๋ณด๋ค ์์์ง๋ค๋ฉด ํด๋น ๋ ธ๋์ ๋ค์ 2๋ฒ ๊ณผ์ ์ ๋ฐ๋ณตํ๋ค.
+++++
- IntersectionObserver
- B-Tree
- Web Server & Web Application Server
- Query Optimization (1)
- Query Optimization (2)
- M1 Mac์์ link preview generator ์ค์น ์ค ๋ฐ์ํ๋ ์ค๋ฅ
- CORS
- react-router-dom
- Artillery: Performance testing tool
- JWT
- LinkPreview
- SWR
- ์ฟผ๋ฆฌ์ฑ๋ฅํฅ์&๋ฌดํ์คํฌ๋กค
- 10์ 26์ผ ํ์์ผ
- 10์ 27์ผ ์์์ผ
- 10์ 28์ผ ๋ชฉ์์ผ
- 11์ 1์ผ ์์์ผ
- 11์ 2์ผ ํ์์ผ
- 11์ 3์ผ ์์์ผ
- 11์ 4์ผ ๋ชฉ์์ผ
- 11์ 9์ผ ํ์์ผ
- 11์ 10์ผ ์์์ผ
- 11์ 11์ผ ๋ชฉ์์ผ
- 11์ 16์ผ ํ์์ผ
- 11์ 17์ผ ์์์ผ
- 11์ 18์ผ ๋ชฉ์์ผ
- 11์ 23์ผ ํ์์ผ
- 11์ 24์ผ ์์์ผ
- 11์ 25์ผ ๋ชฉ์์ผ
- 11์ 30์ผ ํ์์ผ
- 12์ 1์ผ ์์์ผ
- 12์ 2์ผ ๋ชฉ์์ผ