Heap
π« @TODO
Heap
κ·Έλνμ νΈλ¦¬ ꡬ쑰 μ€ νλ
μ°μ μμ ν Priority Queueλ₯Ό ꡬνν λ μ¬μ©λ¨
μ°μ μμ νλ λ°μ΄ν° ꡬ쑰μ νλλ‘μ λ°μ΄ν°λ₯Ό μμ λ‘κ² μΆκ°ν μ μμ
λ°λ©΄, λ°μ΄ν°λ₯Ό μΆμΆν λλ μ΅μκ°λΆν° μμλλ‘ μ νλ©λλ€
-> μΆκ°λ μμ λ‘κ², μΆμΆ μ μμ κ°λΆν° κΊΌλ΄λ κ²
νμ νννλ νΈλ¦¬ ꡬ쑰μμλ κ° μ μ μ λ
Έλ NodeλΌκ³ λΆλ¦
νμμλ κ° λ
Έλμ λ°μ΄ν°κ° μ μ₯λ¨
λ
Έλλ€μ μ΅λ λ κ°μ μμ λ
Έλλ₯Ό κ°μ§ μ μμ
νΈλ¦¬μ λͺ¨μμ λ°μ΄ν°μ κ°μμ μν΄ μ ν΄μ§λλ€
λ
Έλλ μμμλΆν° μ±μμ§λ©°, κ°μ μΈ΅(λ¨)μμλ μΌμͺ½λΆν° μ±μμ§λλ€
μ½μ λλ λ§μ°¬κ°μ§
νμμλ λ°μ΄ν° μ μ₯ μμΉλ₯Ό μ νκΈ° μν΄ μμ λ
Έλμ μ«μλ λ°λμ λΆλͺ¨μ μ«μλ³΄λ€ μ»€μΌνλ€λ κ·μΉμ΄ μμ
λ°λΌμ κ°μ₯ μ (λΏλ¦¬, Root)μ κ°μ₯ μμ μ«μκ° λ€μ΄μμ
λ°μ΄ν°λ₯Ό μΆκ°ν λλ μ΄ κ·μΉμ μ§ν€κΈ° μν΄ κ°μ₯ μλ μΈ΅μ μλ μΌμͺ½ λ
ΈλλΆν° κ°μ μ±μ
κ°μ₯ μλ μΈ΅μ΄ λͺ¨λ μ±μμ§λ©΄ μλ‘μ΄ μΈ΅μ λ§λ€μ΄μ κ°μ₯ μΌμͺ½μ μ±μ
ꡬν (μΆκ°)
- μΌλ¨ λ¨Όμ λ¨μ μ리μ μ μ₯
- λΆλͺ¨μ μ«μκ° ν¬λ©΄ 쑰건μ λ§μ‘±νμ§ μμΌλ―λ‘ λΆλͺ¨μ μμμ κ΅ν (κ΅νμ΄ λ°μνμ§ μμ λκΉμ§ λ°λ³΅)
ꡬν (μΆμΆ)
- κ°μ₯ μμ μλ μ«μ μΆμΆ (κ°μ₯ μμ μλΆν° λμ€λκΉ), μ΄ν μ¬κ΅¬μΆ
- κ°μ₯ νλ―Έμ μλ μ«μλ₯Ό κ°μ₯ μλ‘ μ΄λ (μ μ₯ μμκ° μμμ μλ, μΌμͺ½μμ μ€λ₯Έμͺ½μ΄λ―λ‘)
- (κ΅ν) λΆλͺ¨μ μ«μκ° ν¬λ©΄ 쑰건μ λ§μ‘±νμ§ μμΌλ―λ‘ λΆλͺ¨μ μμμ κ΅ν (κ΅νμ΄ λ°μνμ§ μμ λκΉμ§ λ°λ³΅)
μΆκ° : μ¬κ΅¬μΆ O(log2 N) (νΈλ¦¬μ λμ΄(log2 N)μ λΉλ‘, μλ λ°©ν₯)
μΆμΆ : O(1) + μ¬κ΅¬μΆ O(log2 N) (νΈλ¦¬μ λμ΄(log2 N)μ λΉλ‘, μ λ°©ν₯)
λ€μ΅μ€νΈλΌ