https://www.programiz.com/dsa/b-plus-tree
B+ํธ๋ฆฌ๋ฅผ c๋ก ๊ตฌํํ ์ฝ๋๋ค.
github
B+ํธ๋ฆฌ๋ Bํธ๋ฆฌ์ ๊ฐ์ ๊ตฌ์กฐ๋ก leaf์ ๋ชจ๋ ๊ฐ๋ค์ ๋ด๊ณ ์๋ค. ์ด๋ ๋ฉํฐ๋ ๋ฒจ ์ธ๋ฑ์ฑ์ ๊ฐ๋ฅํ๊ฒ ํ์ฌ ๋ ๋น ๋ฅด๊ณ ๊ฐ๋จํ๊ฒ ๋ฐ์ดํฐ์ ์ ๊ทผํ ์ ์๊ฒ ํ๋ค. ๋ฐ์ดํฐ ๋ฒ ์ด์ค์์ ์ฌ์ฉ๋๊ธฐ ์ ์ ํ๋ค.
1. ํ์
n ์ฐจ B+ํธ๋ฆฌ์์ k๊ฐ์ ํ์ํ๊ณ ์ ํ๋ค.
2. ์ฝ์
B+ํธ๋ฆฌ์์ ๋ชจ๋ ๊ฐ์ leaf์ ์ฝ์
๋์ด์ผํ๋ฏ๋ก, ์ผ๋จ์ ์ ์ ํ leaf๊น์ง ์ฐพ์ ๋ค์ด๊ฐ๋ค. ์ฝ์
์ ๋ ๊ฐ์ง ๋จ๊ณ๋ฅผ ๊ฑฐ์น๋ค.
1) ์ ์ ํ leaf๋ฅผ ์ฐพ๊ณ ์ฝ์
2) ํ์ํ๋ค๋ฉด ์ ๋ฆฌ์ ๋ถํ
Case#1: leaf๊ฐ ๊ฐ๋์ฐจ์ง ์์์ ๋
Case#2: leaf๊ฐ ๊ฐ๋์ฐผ์ ๋
3. ์ญ์
B+ํธ๋ฆฌ์์๋ ๋ด๋ถ์ ๋
ธ๋๊ฐ ์ค๋ณต๋์ด ์์์ผ๋ก(๋ด๋ถ์ ํ ๊ฐ, leaf์ ํ ๊ฐ) ์ ๊ฒฝ์จ์ผ ํ๋ค. ์ญ์ ๋ ๋ค์ 3๋จ๊ณ๋ฅผ ๊ฑฐ์น๋ค.
1) ์ญ์ ๋ ํค์ ์์น๋ฅผ ํ์ ํ ์ญ์
2) ํ์ํ๋ค๋ฉด ์ ๋ฆฌ
3) ํ์ํ๋ค๋ฉด ๋
ธ๋๊ฐ ์ต์์ ํค ๊ฐฏ์๋ฅผ ๊ฐ์ง์ง ๋ชปํ๋ underflow์ ๋ํ ์ฒ๋ฆฌ
Case#1: leaf์์๋ง ์ญ์ ๋ ๋
Case#2: ๋ด๋ถ์ leaf ์ญ์ ๋ ๋
inorder predecessor = ๋ด ๋
ธ๋์ ์ผ์ชฝ ์์ ๋
ธ๋ ์ค ๊ฐ์ฅ ํฐ ํค
inorder successor = ๋ด ๋
ธ๋์ ์ค๋ฅธ์ชฝ ์์ ๋
ธ๋ ์ค ๊ฐ์ฅ ์์ ํค
B+ํธ๋ฆฌ์ ํต์ฌ์ leaf์์ ์ผ์ด๋๋ ์ญ์ ์ ๋ด๋ถ์์ ์ผ์ด๋๋ ์ญ์ ๋ฅผ ๊ตฌ๋ถํ๋ ๊ฒ์ด๋ค. leaf์ ์ผ์ด๋๋ ์ญ์ ๋ ๋ถ๋ชจ ๋ ธ๋์ ์๋ ๊ฐ ๊ฐ์ ๊ฒฝ์ฐ๋ ์๊ณ , ๋ฆฌํ ๋ ธ๋์ ์ฐ๊ฒฐ์ฑ๋ ์ ๊ฒฝ์จํ๋ค. ๋ด๋ถ์์ ์ผ์ด๋๋ ์ญ์ ๋ inorder successor๋ก ๋์ฒด๋๋ค.
๋ํ, leaf์์ ์ผ์ด๋๋ ์ญ์ ์ ๋ด๋ถ์์ ๋ฐธ๋ฐ์ฑ๊ณผ ๋ฐธ๋ฐ์ฑ๊ณผ ๋ณํฉ(merge)์ ๊ตฌ๋ถํด์ผ ํ๋ค. leaf์์ ์ผ์ด๋๋ ์ญ์ ๋ ๋ถ๋ชจ ๋ ธ๋ ๋ฆฌํ๋ ธ๋๊ฐ ๊ฐ์ ๊ฒฝ์ฐ์ ๋ฆฌํ ๋ ธ๋๋ฅผ ๊ณ ๋ คํด์ผํ๋ค. ๋ด๋ถ์์ ์ผ์ด๋๋ ๋ฐธ๋ฐ์ฑ๊ณผ ๋ณํฉ์ ๋นํธ๋ฆฌ์ ๊ฐ๋ค.
๋ง์ฝ leaf ๋ ธ๋์ ์ถฉ๋ถํ ํค ๊ฐฏ์๊ฐ ์๋ค๋ฉด, ๋ด๋ถ์ leaf์ ํค ๊ฐ์ ์ญ์ ํ๋ค. leaf๋ ๋ค์ ํค์ ์ฐ๊ฒฐ ์์ผ์ค๋ค. (๋ด๋ถ ๋ ธ๋์ ๋น ๊ณต๊ฐ์ inorder successor๋ก ๋์ฒดํ๋ค.)
๋ง์ฝ leaf ๋ ธ๋์ ์ถฉ๋ถํ ํค ๊ฐฏ์๊ฐ ๋ถ์กฑํ๋ค๋ฉด, ์ญ์ ํ ํ์ ๋ ธ๋์์ ๋น๋ ค์จ๋ค. ๋น๋ ค์จ ๋น ๊ณต๊ฐ์ ๋น๋ ค์จ ๊ฐ์ผ๋ก ๋์ฒดํ๋ค. (๋ด๋ถ ๋ ธ๋์ ๋น ๊ณต๊ฐ์ inorder successor๋ก ๋์ฒดํ๋ค.)
๋ง์ฝ leaf ๋ ธ๋์ ์ถฉ๋ถํ ํค ๊ฐฏ์๊ฐ ๋ถ์กฑํ๊ณ , ํ์ ๋ ธ๋์์ ๋น๋ ค์ฌ ์ ์๋ค๋ฉด, ํ์ ๋ ธ๋์ ๋ณํฉ์ด ์ผ์ด๋๋ค. ์์์ ํฉ์ณ์ฃผ๊ณ ๋ถ๋ชจ๋ ์ญ์ ๋๋ค. (๋ด๋ถ ๋ ธ๋์ ๋น ๊ณต๊ฐ์ inorder successor๋ก ๋์ฒดํ๋ค.)
๋ง์ฝ ๋ด๋ถ์ ๋น ๊ณต๊ฐ์ด, leaf์ ํ ์๋ฒ์ง(๋ถ๋ชจ์ ๋ถ๋ชจ)๋
ธ๋ ์ผ ๋, leaf ๋
ธ๋๋ ํ์ ๋
ธ๋์ ํฉ์น๋ค. ๋น ๊ณต๊ฐ์ inorder successor๋ก ๋์ฒดํ๋ค. -> ์ด๋ฐ ์ผ์ด์ค๋ฅผ ๋ฐ๋ก ๊ณ ๋ คํ ์๋ ์์ง๋ง ์ฌ๊ท๋ฅผ ์ฌ์ฉํ์ฌ ๋ค์ ํ๋ฒ ๋ฐธ๋ฐ์ฑ์ด ์ด๋ฃจ์ด์งํ ๋ค์ ํ๋ฒ ์ญ์ ํ ๊ฐ์ด ์๋ ์ง ๊ฒํ ํ๋ ๋ฐฉ๋ฒ๋ ์๋ค.
Case#3: ํธ๋ฆฌ์ ๋์ด(height)๊ฐ ์ถ์ ๋ ๋