Splay Tree
BST (์ด์ง ํ์ ํธ๋ฆฌ)๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๋ Tree.
Splaying
์ด๋ผ๋ ๊ธฐ๋ฒ์ด ์ฌ์ฉ๋๋ฉฐ, ์ด๋ ํน์ ๋
ธ๋์ ๋ํด ์ ๊ทผ์ ํ๋ฉด, ์ด๋ฅผ ๋ฃจํธ๋ก ์์นํ๋๋ก ์ฌ๋ฐฐ์น ํ๋ ๊ธฐ๋ฒ์ ํธ๋ฆฌ
์ฝ์ , ์ญ์ , ํ์์ ์๊ฐ๋ณต์ก๋๋ O(log n)
ํน์ง
๊ตฌํ์ด ๋จ์
๋ง์ด ์ ๊ทผํ ๋ ธ๋์ ๋ํด์ ๋น ๋ฅธ ์ ๊ทผ์ด ๊ฐ๋ฅํ๋ค
์ ๊ทผ ๋น๋๊ฐ ๋ถ๊ท ๋ฑํ๊ฑฐ๋ ๋น ๋๋ค ํจํด์ ๊ฒฝ์ฐ O(lgn)๋ณด๋ค ๋ ์ ๋ฆฌํ๋ค.
AVL-Tree์ RB-Tree์ ๋ฌ๋ฆฌ ์ถ๊ฐ ๋ฐ์ดํฐ ์ ์ฅ ํ์ ์๋ค.
์ต์ ์ ๊ฒฝ์ฐ ๋์ด๊ฐ ์ ํ, ์ฆ O(n)์ด ๋์ฌ ์ ์๋ค.
์ธ๊ทธ๋จผํธ ํธ๋ฆฌ๋ก ์ด์ฉ์ด ๊ฐ๋ฅํ๋ค. (k๋ฒ์งธ ์์ ์ฐพ๊ธฐ, ๊ตฌ๊ฐ ํฉ, lazy Propagation, ๊ตฌ๊ฐ ๋ค์ง๊ธฐ ๋ชจ๋ ์ฝ๊ฒ ํ ์ ์๋ค.) x๋ ธ๋๋ฅผ ์ ๊ทผํ๋ค๋ฉด, splay๋ฅผ ํตํด root๋ก ์ฌ๋ผ์ค๋ฉด์ x๋ณด๋ค ์์ ๋ ธ๋๋ค์ Left์, ํฐ ๋ ธ๋๋ค์ Right์ ๋ชจ์ด๋ ํน์ฑ์ ์ด์ฉ
์ฌ์ฉ ์
์บ์, Garbage Collector ์๊ณ ๋ฆฌ์ฆ
์ฌ์ฉ ๊ธฐ๋ฒ
Splay : rotate๋ฅผ ๊ธฐ๋ณธ์ผ๋ก, ํ์/์ฝ์ /์ญ์ ํ ๋ ธ๋๋ฅผ root์ ์์นํ ๋ ๊น์ง rotate์์ผ๊ฐ๋ ๊ธฐ๋ฒ
์ด๋ RB Tree์ ๋ง์ฐฌ๊ฐ์ง๋ก ๋ถ๋ชจ ๋ ธ๋๊ฐ ํ ์๋ฒ์ง ๋ ธ๋์ ์ด๋ ์์์ธ์ง์ ๋ฐ๋ผ ๋์นญ์ด๋ค.
Zig : ๊ธฐ์ค ๋ ธ๋ x, z์ ๋ถ๋ชจ ๋ ธ๋ y๊ฐ root์ผ ๋, y๋ฅผ ๊ธฐ์ค์ผ๋ก rotate
Zig-Zig : x์ ํ ์๋ฒ์ง ๋ ธ๋, z๊ฐ ์์ ๋, z์ ๋ํด ์์ y์ ๋ฐฉํฅ๊ณผ y์ ๋ํด x์ ๋ฐฉํฅ์ด ๊ฐ์ ๋ (z->y ๋ฐฉํฅ == y->x ๋ฐฉํฅ )
y๊ฐ z์ ์ผ์ชฝ ์์์ผ ๋ : right-rotate(z) ํ right-rotate(y)
y๊ฐ z์ ์ค๋ฅธ์กฑ ์์์ผ๋ : left-rotate(z)ํ left-rotate(y)
Zig-Zag: x์ ํ ์๋ฒ์ง ๋ ธ๋, z๊ฐ ์์ ๋, z์ ๋ํด ์์ y์ ๋ฐฉํฅ๊ณผ y์ ๋ํด ์์ x์ ๋ฐฉํฅ์ด ๋ค๋ฅผ ๋ (z->y ๋ฐฉํฅ != y->x ๋ฐฉํฅ)
y๊ฐ z์ ์ผ์ชฝ ์์์ผ ๋ : right-rotate(y) ํ left-rotate(y)
y๊ฐ z์ ์ค๋ฅธ์กฑ ์์์ผ๋ : left-rotate(y)ํ right-rotate(y)
๊ตฌํ
node ๊ตฌ์กฐ์ฒด
์ ๊ทผํ ๋ ธ๋ x์ ๋ํด ๊ทธ ๋ถ๋ชจ, ํ ์๋ฒ์ง ๋ ธ๋์ ์ ๊ทผ์ด ๊ฐ๋ฅํด์ผ ํ๋ฏ๋ก ๋ฐ๋ก ํธ๋ฆฌ๋ฅผ ๋ง๋ค๋์ง, ๋ ธ๋ ๊ตฌ์กฐ์ฒด์ ๋ถ๋ชจ๋ฅผ ๊ฐ๋ฆฌํฌ ํฌ์ธํฐ๋ฅผ ์ถ๊ฐ ์์ฑํด์ฃผ๋ฉด ๋๋ค.
Insert ( ์ฝ์
)
BST ๊ท์น์ ๋ง๊ฒ ์ฝ์
ํ ์ฝ์
ํ ๋
ธ๋๋ฅผ x(๊ธฐ์ค)์ผ๋ก Splay
๋ฅผ ์คํํ๋ฉด ๋๋ค.
Delete ( ์ญ์ )
์ญ์ ํ ๋
ธ๋(x)๋ฅผ Splay
๋ฅผ ํตํด root๋ก ์ฌ๋ฆฐ ํ, x์ successor๋ฅผ root๋ก ์ฌ์กฐ์ ํด์ฃผ๋ฉด ๋๋ค.
Search ( ํ์ )
์ผ๋ฐ BST์ ๊ฐ์ด ํ์ฌ ๋
ธ๋key๊ฐ ์ฐพ๊ณ ์ํ๋ key๋ณด๋ค ์์ผ๋ฉด ์ผ์ชฝ, ํฌ๋ฉด ์ค๋ฅธ์ชฝ์ผ๋ก ๋ด๋ ค๊ฐ๋ฉด์ ์ฐพ๊ณ , ์ฐพ์ ๋
ธ๋์ ๋ํด Splay
๋ฅผ ์ํํ๋ค.
์๊ฐ ๋ณต์ก๋
์ฝ์ /ํ์ ์ ๊ฐ์ฅ ์์ ์ซ์๋ ๊ฐ์ฅ ํฐ ์ซ์๋ฅผ ์ ๊ทผํ๋ค๋ฉด, ํธ๋ฆฌ๋ O(n)์ผ๋ก ์ ํ์ ์ธ ํธ๋ฆฌ๊ฐ ์์ฑ์ด ๋์ง๋ง, ๋ฌด์์ splay๋ฅผ ํตํด ๊ตฌ์กฐ๋ฅผ ๋ฐ๊ฟ ์ค ์๋ ์๊ณ , ์์ฃผ ์ ๊ทผ ํ๋ ๋ ธ๋๋ O(lgn)๋ณด๋ค ๋น ๋ฅด๊ฒ ์ ๊ทผ์ด ๊ฐ๋ฅํ๊ธฐ ๋๋ฌธ์ ์๊ฐ O(lgn)์ผ๋ก ๋ณผ ์ ์๋ค.
Last updated