Heap
๐ซ @TODO
Heap
๊ทธ๋ํ์ ํธ๋ฆฌ ๊ตฌ์กฐ ์ค ํ๋
์ฐ์ ์์ ํ Priority Queue๋ฅผ ๊ตฌํํ ๋ ์ฌ์ฉ๋จ
์ฐ์ ์์ ํ๋ ๋ฐ์ดํฐ ๊ตฌ์กฐ์ ํ๋๋ก์ ๋ฐ์ดํฐ๋ฅผ ์์ ๋กญ๊ฒ ์ถ๊ฐํ ์ ์์
๋ฐ๋ฉด, ๋ฐ์ดํฐ๋ฅผ ์ถ์ถํ ๋๋ ์ต์๊ฐ๋ถํฐ ์์๋๋ก ์ ํ๋ฉ๋๋ค
-> ์ถ๊ฐ๋ ์์ ๋กญ๊ฒ, ์ถ์ถ ์ ์์ ๊ฐ๋ถํฐ ๊บผ๋ด๋ ๊ฒ
ํ์ ํํํ๋ ํธ๋ฆฌ ๊ตฌ์กฐ์์๋ ๊ฐ ์ ์ ์ ๋
ธ๋ Node๋ผ๊ณ ๋ถ๋ฆ
ํ์์๋ ๊ฐ ๋
ธ๋์ ๋ฐ์ดํฐ๊ฐ ์ ์ฅ๋จ
๋
ธ๋๋ค์ ์ต๋ ๋ ๊ฐ์ ์์ ๋
ธ๋๋ฅผ ๊ฐ์ง ์ ์์
ํธ๋ฆฌ์ ๋ชจ์์ ๋ฐ์ดํฐ์ ๊ฐ์์ ์ํด ์ ํด์ง๋๋ค
๋
ธ๋๋ ์์์๋ถํฐ ์ฑ์์ง๋ฉฐ, ๊ฐ์ ์ธต(๋จ)์์๋ ์ผ์ชฝ๋ถํฐ ์ฑ์์ง๋๋ค
์ฝ์ ๋๋ ๋ง์ฐฌ๊ฐ์ง
ํ์์๋ ๋ฐ์ดํฐ ์ ์ฅ ์์น๋ฅผ ์ ํ๊ธฐ ์ํด ์์ ๋
ธ๋์ ์ซ์๋ ๋ฐ๋์ ๋ถ๋ชจ์ ์ซ์๋ณด๋ค ์ปค์ผํ๋ค๋ ๊ท์น์ด ์์
๋ฐ๋ผ์ ๊ฐ์ฅ ์ (๋ฟ๋ฆฌ, Root)์ ๊ฐ์ฅ ์์ ์ซ์๊ฐ ๋ค์ด์์
๋ฐ์ดํฐ๋ฅผ ์ถ๊ฐํ ๋๋ ์ด ๊ท์น์ ์งํค๊ธฐ ์ํด ๊ฐ์ฅ ์๋ ์ธต์ ์๋ ์ผ์ชฝ ๋
ธ๋๋ถํฐ ๊ฐ์ ์ฑ์
๊ฐ์ฅ ์๋ ์ธต์ด ๋ชจ๋ ์ฑ์์ง๋ฉด ์๋ก์ด ์ธต์ ๋ง๋ค์ด์ ๊ฐ์ฅ ์ผ์ชฝ์ ์ฑ์
๊ตฌํ (์ถ๊ฐ)
- ์ผ๋จ ๋จผ์ ๋จ์ ์๋ฆฌ์ ์ ์ฅ
- ๋ถ๋ชจ์ ์ซ์๊ฐ ํฌ๋ฉด ์กฐ๊ฑด์ ๋ง์กฑํ์ง ์์ผ๋ฏ๋ก ๋ถ๋ชจ์ ์์์ ๊ตํ (๊ตํ์ด ๋ฐ์ํ์ง ์์ ๋๊น์ง ๋ฐ๋ณต)
๊ตฌํ (์ถ์ถ)
- ๊ฐ์ฅ ์์ ์๋ ์ซ์ ์ถ์ถ (๊ฐ์ฅ ์์ ์๋ถํฐ ๋์ค๋๊น), ์ดํ ์ฌ๊ตฌ์ถ
- ๊ฐ์ฅ ํ๋ฏธ์ ์๋ ์ซ์๋ฅผ ๊ฐ์ฅ ์๋ก ์ด๋ (์ ์ฅ ์์๊ฐ ์์์ ์๋, ์ผ์ชฝ์์ ์ค๋ฅธ์ชฝ์ด๋ฏ๋ก)
- (๊ตํ) ๋ถ๋ชจ์ ์ซ์๊ฐ ํฌ๋ฉด ์กฐ๊ฑด์ ๋ง์กฑํ์ง ์์ผ๋ฏ๋ก ๋ถ๋ชจ์ ์์์ ๊ตํ (๊ตํ์ด ๋ฐ์ํ์ง ์์ ๋๊น์ง ๋ฐ๋ณต)
์ถ๊ฐ : ์ฌ๊ตฌ์ถ O(log2 N) (ํธ๋ฆฌ์ ๋์ด(log2 N)์ ๋น๋ก, ์๋ ๋ฐฉํฅ)
์ถ์ถ : O(1) + ์ฌ๊ตฌ์ถ O(log2 N) (ํธ๋ฆฌ์ ๋์ด(log2 N)์ ๋น๋ก, ์ ๋ฐฉํฅ)
๋ค์ต์คํธ๋ผ