์๋์ ์ ํฝ์์์ ๋ฐํ์ผ๋ก ์์ฑ๋์์ต๋๋ค. ์ข์์์ ๊ฐ์ฌํฉ๋๋ค.
Binary Heaps (Min-Heaps and Max-Heaps) - https://youtu.be/jfwjyJvbbBI
0. ํ(Heaps)๋? |
์ต๋๊ฐ์ด๋ ์ต์๊ฐ์ ์ฐพ์๋ด๋ ์ฐ์ฐ์ ๋น ๋ฅด๊ฒ ํ๊ธฐ ์ํ ์์ ์ด์ง ํธ๋ฆฌ๋ฅผ ๊ธฐ๋ณธ์ผ๋ก ํ ์๋ฃ๊ตฌ์กฐ.
root์ ๊ฐ์ฅ ์์ ๊ฐ์ด ์ค๋ฉด ์ต์ ํ(min heap), root์ ๊ฐ์ฅ ํฐ ๊ฐ์ด ์ค๋ฉด ์ต๋ ํ(max heap)
1. ์ต์ ํ์ ๋ ธ๋ ์ฝ์ ํ๊ธฐ(Insert) |
1. ์์ ๋ ธ๋์ ๋งจ ๋(leaf)์ ๋ ธ๋๋ฅผ ์ถ๊ฐํ๋, ์์ ์ด์ง ํธ๋ฆฌ(Complete binary tree)๋ฅผ ์ ์งํด์ผ ํ๋ฏ๋ก ๋ง์ง๋ง ๋ ๋ฒจ์ ์ผ์ชฝ๋ถํฐ ์ถ๊ฐ.
2. ๋ถ๋ชจ๋ ธ๋ > ์๋ ธ๋ ๋ผ๋ฉด ๋ถ๋ชจ์ ์๋ ธ๋์ ์๋ฆฌ๋ฅผ ๋ฐ๊ฟ.
3. ๋ถ๋ชจ๋ ธ๋ < ์๋ ธ๋๊ฑฐ๋, ์๋ ธ๋๊ฐ root๊ฐ ๋ ๋๊น์ง ๋ฐ๋ณต.
*ํ ๋ ๋ฒจ์ฉ ์ฐ์ฐํ๋ฏ๋ก ์๊ฐ๋ณต์ก๋๋ O(logn)*
2. ์ต์ ํ์์ ๋ ธ๋ ๊บผ๋ด์ค๊ธฐ(Delete) |
1. root๋ฅผ ๊บผ๋ธ ๋ค, ์ ์ผ ๋ง์ง๋ง ๋ ธ๋๋ฅผ root์๋ฆฌ๋ก ์ด๋์ํด.
2. root์ left child, right child๋ฅผ ๋น๊ตํด์ ๋ ์์ ์์๊ณผ ์ค์ํ๋ค.
3. ์ค์ํ ๋ ธ๋์ ์์๋ค์ด ํ์ฌ ๋ ธ๋๋ณด๋ค ํฌ๊ฑฐ๋, leaf ๋ ธ๋์ผ๋ ๊น์ง ๋ฐ๋ณตํ๋ค.
*ํ ๋ ๋ฒจ์ฉ ์ฐ์ฐํ๋ฏ๋ก ์๊ฐ๋ณต์ก๋๋ O(logn)*
3. ์ด์ง ํ์ ๊ตฌํ ๋ฐ ์ฐ์ต(c++) |
๋ฒกํฐ๋ฅผ ์ด์ฉํ ์ด์ง ํ ๊ตฌํ.
(์ฐ์ต์ฉ์ผ๋ก ๊ตฌํํ ์ฝ๋์ ๋๋ค. ์๋ชป๋ ๋ถ๋ถ์ด ์์ผ๋ฉด ์ธ์ ๋ ์๋ ค์ฃผ์ธ์. ๊ฐ์ฌํฉ๋๋ค (--)(__))
(1) .h
(2) .cpp
'โ๏ธ ์ด๋ก > ์๋ฃ๊ตฌ์กฐ, ์๊ณ ๋ฆฌ์ฆ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[์๋ฃ๊ตฌ์กฐ] ํธ๋ฆฌ(Tree) - ๋ฐฐ์ด์ ์ด์ง๊ฒ์ํธ๋ฆฌ๋ก ๋ง๋ค๊ธฐ (0) | 2019.09.19 |
---|---|
[์๋ฃ๊ตฌ์กฐ] ๊ทธ๋ํ(Graph) - ๋ ์ง์ ์ ๊ฒฝ๋ก ์ฐพ๊ธฐ(dfs) (0) | 2019.09.19 |
[์๋ฃ๊ตฌ์กฐ] ๊ทธ๋ํ(Graph) - DFS, BFS ๊ตฌํ (0) | 2019.09.19 |
[์๋ฃ๊ตฌ์กฐ] ํธ๋ฆฌ(Tree) - ํธ๋ผ์ด ํธ๋ฆฌ(Trie tree) (3) | 2019.09.19 |
[์๋ฃ๊ตฌ์กฐ] ํธ๋ฆฌ(Tree) - ํธ๋ฆฌ์ ์ข ๋ฅ, 3๊ฐ์ง ์ํ๋ฐฉ๋ฒ (0) | 2019.09.19 |