BST
BST(Binary Search Tree)๋ ํธ๋ฆฌ์ ํ ์ข ๋ฅ์ด์ ์ด์งํ์์ ์ํ ๋ฐฉ๋ฒ ์ค ํ๋์ด๋ค.
๊ณผ์
BST๋ฅผ ์ด์ฉํ ํ์์์๋ ๋ค์๊ณผ ๊ฐ์ ๊ณผ์ ์ ๊ฑฐ์น๋ค.
- ์ด์ง ํ์ ํธ๋ฆฌ ๋ง๋ค๊ธฐ (์์ฑ)
- ๋ฃจํธ ๋ ธ๋์์ ๋ด๋ ค๊ฐ๋ฉด์ ์ํ๋ ์์ ์ฐพ๊ธฐ (ํ์)
- ์ญ์ ๋ฐ ์ฝ์ ํ๊ธฐ (์ญ์ / ์ฝ์ )
์์
๋จผ์ ์ด์ง ํ์ ํธ๋ฆฌ๋ฅผ ๋ง๋ค์ด๋ณด์.
์ด์ง ํ์ ํธ๋ฆฌ๋ ๋ถ๋ชจ ๋ ธ๋๋ฅผ ๊ธฐ์ค์ผ๋ก ์ผ์ชฝ ์๋ธํธ๋ฆฌ์๋ ๋ ์์ ๊ฐ์ ๋ ธ๋๊ฐ ์ค๋ฅธ์ชฝ ์๋ธํธ๋ฆฌ์๋ ๋ ํฐ ๊ฐ์ ๋ ธ๋๊ฐ ์์ด์ผํ๋ค. ๋ฐ๋ผ์ ์์๋ฅผ ํ๋์ฉ ์ฝ์ ํ๋ฉด์ ์๋ง์ ์์น๋ฅผ ์ฐพ์์ฃผ๋ฉด ๋๋ค.
๊ฒฐ๊ณผ์ ์ผ๋ก ๋์จ ์ด์ง ํ์ ํธ๋ฆฌ๋ฅผ ์ค์ ์ํํ๋ฉด ์ ๋ ฌ๋ ๋ฆฌ์คํธ๊ฐ ๋๋ค.
๊ทธ ๋ค์์๋ ๋ฃจํธ ๋ ธ๋์์ ๋ด๋ ค๊ฐ๋ฉด์ ์ํ๋ ์์๋ฅผ ์ฐพ๊ณ ์ญ์ ํด๋ณด์. ์ํ๋ ์์๋ 6์ด๋ค.
์ผ์ชฝ ๊ทธ๋ฆผ์์ ์ค๋ฅธ์ชฝ ๊ทธ๋ฆผ์ผ๋ก์ ๊ณผ์ ์ ๊ฑฐ์น๋ฉด์ 6์ ์ฐพ์๋ธ๋ค.
๊ทธ๋ฆฌ๊ณ 6์ ์ญ์ ํ๋ค.
์ฐ์ฐ
์์์ ์์๋ก ์ดํด๋ดค๋ฏ BST์๋ ํ์, ์ฝ์ , ์ญ์ ๋ผ๋ 3๊ฐ์ง ์ฃผ์ํ ์ฐ์ฐ์ด ์กด์ฌํ๋ค.
์ฃผ์ด์ง ๋ฆฌ์คํธ์์ 9๋ฅผ ์ฝ์ ํ๊ณ 4, 2, 5๋ฅผ ์ญ์ ํ๋ ๊ณผ์ ์ ๋ณด๋ฉด์ ๊ฐ ์ํฉ์ ๋ฐ๋ฅธ ์ฐ์ฐ์ ์ดํด๋ณด์.
ํ์
(9 ์์น ํ์)
ํ์ ์ฐ์ฐ์ ์ํ๋ ์์๊ฐ ํธ๋ฆฌ์ ์กด์ฌํ๋์ง, ์กด์ฌํ๋ค๋ฉด ์ด๋ค ์์น์ ์๋์ง๋ฅผ ํ์ธํ๋ ์ฐ์ฐ์ด๋ค. ๋ฃจํธ ๋ ธ๋๋ถํฐ ์์ํ์ฌ ๋์ ๊ด๊ณ์ ๋ฐ๋ผ ๊ฐ์ ํ์ ์ง๊ฑฐ๋ ์ผ์ชฝ์ด๋ ์ค๋ฅธ์ชฝ ์๋ธํธ๋ฆฌ๋ก ์ด๋ํ๋ค.
9๋ ํ์ธํ ์์น(8 ๋ ธ๋)์ ์ค๋ฅธ์ชฝ ์์์ผ๋ก ์ฝ์ ๋๋ฉด ๋๋ค.
์ฝ์
(9 ์ฝ์ )
ํ์ ์ฐ์ฐ์ผ๋ก ํ์ธํ ์์น์ ์์๋ฅผ ์ฝ์ ํ๋ ์ฐ์ฐ์ด๋ค. ํด๋น ์์น์ ๋ ธ๋๋ฅผ ๋ถ๋ชจ๋ ธ๋๋ก ๊ฐ์ฃผํ๊ณ ํฌ์ธํฐ๋ฅผ ์ฝ์ ํ๊ณ ์ํ๋ ๋ ธ๋์ ์ฃผ์๋ก ํ ๋นํด์ค๋ค.
์ญ์
์ญ์ ์ฐ์ฐ์ ํธ๋ฆฌ์ ์ด๋ค ๋ ธ๋๋ฅผ ์ญ์ ํ ๊ฒ์ธ์ง์ ๋ฐ๋ผ ๋ณต์กํด์ง ์๋ ์๋ค.
- ์ญ์ ํ๋ ค๋ ๋ ธ๋๊ฐ ๋ฆฌํ ๋ ธ๋์ผ ๊ฒฝ์ฐ
(4 ์ญ์ )
์ญ์ ํ๋ ค๋ ๋ ธ๋๊ฐ ๋ฆฌํ ๋ ธ๋์ด๋ฉด ์์ ๋ ธ๋๊ฐ ์์ผ๋ฏ๋ก ๋จ์ ์ญ์ ํด์ฃผ๋ฉด ๋๋ค. ์ญ์ ํ๊ณ ์ถ์ ๋ ธ๋์ ๋ถ๋ชจ ๋ ธ๋๋ฅผ ์ฐพ์์ ํด๋น ๋ ธ๋์ ์ฃผ์๊ฐ ์ ์ฅ๋์ด์๋ ํฌ์ธํฐ ๊ฐ์ ์ด๊ธฐํ ์์ผ์ฃผ๋ฉด ๋๋ค.
- ์ญ์ ํ๋ ค๋ ๋ ธ๋๊ฐ ํ๋์ ์๋ธ ํธ๋ฆฌ๋ฅผ ๊ฐ์ง ๊ฒฝ์ฐ
(2 ์ญ์ )
์ญ์ ํ๋ ค๋ ๋ ธ๋๊ฐ ํ์ชฝ์๋ง ์๋ธ ํธ๋ฆฌ๊ฐ ์๋ ๊ฒฝ์ฐ์๋ ํด๋น ๋ ธ๋๋ฅผ ์ญ์ ํ๊ณ ์๋ธํธ๋ฆฌ๋ฅผ ํด๋น ๋ ธ๋์ ๋ถ๋ชจ ๋ ธ๋์ ๋ถ์ด๋ฉด ๋๋ค. ๋ถ๋ชจ ๋ ธ๋์ ํฌ์ธํฐ์ ์ ์ฅ๋ ํด๋น ๋ ธ๋์ ์ฃผ์ ๊ฐ ๋์ ์๋ธํธ๋ฆฌ ๋ฃจํธ ๋ ธ๋์ ์ฃผ์ ๊ฐ์ ์ ์ฅํ๋ฉด ๋๋ ๊ฒ์ด๋ค.
- ์ญ์ ํ๋ ค๋ ๋ ธ๋๊ฐ 2๊ฐ์ ์๋ธ ํธ๋ฆฌ๋ฅผ ๊ฐ์ง ๊ฒฝ์ฐ
(5 ์ญ์ )
์ญ์ ํ๋ ค๋ ๋ ธ๋๊ฐ ๋์ชฝ ๋ชจ๋ ์๋ธ ํธ๋ฆฌ๊ฐ ์๋ ๊ฒฝ์ฐ์๋ ํด๋น ๋ ธ๋์ ์ ํ์ ๋๋ ํ๊ณ์ ์ค ํ๋๋ฅผ ์ญ์ ํ ๋ ธ๋์ ์์น๋ก ๊ฐ์ ธ์จ๋ค.
์ ํ์ / ํ๊ณ์๋ ์ค์ ํ์์ ์์ ์์ ํด๋น ๋ ธ๋ ๋ฐ๋ก ์ด์ , ๋ฐ๋ก ์ดํ์ ์๋ ๋ ธ๋์ด๋ค.
๋ถ์
๊ทธ๋ ๋ค๋ฉด ์ฒ์์ ๋งํ๋ฏ BST๋ ๊ทธ๋ฅ ๋ฆฌ์คํธ๋ฅผ ์ด์ง ํ์ํ๋ ๊ฒ๊ณผ ๋น๊ตํด์ ์ ์ฝ์ / ์ญ์ ๊ฐ ์ฌ์ธ๊น?
BST์์๋ ๋ ธ๋์ ๊ฐฏ์(์์์ ๊ฐฏ์)๊ฐ n์ด๋ผ๊ณ ํ ๋, ํธ๋ฆฌ์ ๋์ด h๋ ์ต์ lgn, ์ต๋ n์ด๋ค. ์์ ์ด์ง ํธ๋ฆฌ์ ํํ๋ฅผ ๋๊ณ ์์ ๋ lgn์ด ๋๊ณ , ํ ์ชฝ์ผ๋ก ์น์ฐ์น ํํ์ ํธ๋ฆฌ๋ n์ ๋์ด๊น์ง ๊ฐ์ง ์ ์๋ค.
๋ฐ๋ผ์ ๊ท ํ์ ์ผ๋ก ์ ์์ฑ๋ BST์ ํ์, ์ฝ์
, ์ญ์ ์ฐ์ฐ์ ์ต๋ ๋ฆฌํ๋
ธ๋๊น์ง ๋ด๋ ค๊ฐ๋ฉด์ ์งํ๋๋ฏ๋ก ๋ชจ๋ O(lgn)
์ด๋ค.
BST | ์ด์ง ํ์ (๋ฐฐ์ด) | |
---|---|---|
ํ์ | O(lgn) | O(lgn) |
์ฝ์ | O(lgn) | O(n) |
์ญ์ | O(lgn) | O(n) |
AVL ํธ๋ฆฌ
BST๋ ํ์ชฝ์ผ๋ก ์น์ฐ์น ํธ๋ฆฌ๋ก ๋ง๋ค์ด์ง ๊ฒฝ์ฐ, ์์ฐจ ํ์๊ณผ ๊ฐ์ ํจ์จ์ ๋ด๋ฏ๋ก ํธ๋ฆฌ๋ฅผ ์ ์์ฑํด์ผํ๋ค. ํจ์จ์ ์ธ BST๋ฅผ ์์ฑํ๊ธฐ ์ํ ๋ฐฉ๋ฒ๋ค์ด ์๋ค. ๊ทธ ์ค ํ๋๋ AVL ํธ๋ฆฌ์ด๋ค.
AVL ํธ๋ฆฌ๋ Adelson-Velskii์ Landis๊ฐ 1962๋ ์ ์ ์ํ ํธ๋ฆฌ๋ก, ๋ชจ๋ ๋ ธ๋์ ์ผ์ชฝ ์ค๋ฅธ์ชฝ ์๋ธํธ๋ฆฌ ๋์ด ์ฐจ(๊ท ํ ์ธ์)์ ์ ๋๊ฐ์ด 1์ดํ์ธ ์ด์ง ํ์ ํธ๋ฆฌ์ด๋ค. ๋ฐ๋ผ์ BST๊ฐ ์น์ฐ์นจ ์์ด ๋ง๋ค์ด์ง๋ฏ๋ก ํ๊ท , ์ต์ , ์ต์ ์ ์๊ฐ๋ณต์ก๋๊ฐ ๋ชจ๋ O(lgn)๋ค.
AVL ํธ๋ฆฌ๋ ์ฝ์ ์ญ์ ์ฐ์ฐ ์ ์กฐ๊ฑด์ด ๊นจ์ง ์๋ ์๋ค. ๋ฐ๋ผ์ ๊ธฐ์กด BST์ ๋๊ฐ์ด ์ฐ์ฐ์ ์ํํ์ง๋ง ์กฐ๊ฑด์ ํ๋ณตํ๊ธฐ ์ํด ํ์ ์ ์ฌ์ฉํ๋ค. LL, RR, LR, RL ๋ฑ์ ํ์ ์ ์ฌ์ฉํ์ฌ ์กฐ๊ฑด์ ํ๋ณตํ๋ค.
์ฐธ๊ณ : https://ratsgo.github.io/data%20structure&algorithm/2017/10/22/bst/
Comment