What-is-heap.md


κ°œλ…

μ™„μ „ 이진 트리의 μΌμ’…μœΌλ‘œ μš°μ„ μˆœμœ„ 큐λ₯Ό μœ„ν•˜μ—¬ λ§Œλ“€μ–΄μ§„ μžλ£Œκ΅¬μ‘°μ΄λ‹€. μ—¬λŸ¬κ°œμ˜ κ°’λ“€ μ€‘μ—μ„œ μ΅œλŒ“κ°’μ΄λ‚˜ μ΅œμ†Ÿκ°’μ„ λΉ λ₯΄κ²Œ 찾아내도둝 λ§Œλ“€μ–΄μ§„ μžλ£Œκ΅¬μ‘°μ΄λ‹€.

μ’…λ₯˜

  • μ΅œλŒ€ νž™(Max Heap) λΆ€λͺ¨ λ…Έλ“œμ˜ ν‚€ 값이 μžμ‹λ…Έλ“œμ˜ 킀값보닀 ν¬κ±°λ‚˜ 같은 μ™„μ „ 이진 트리

  • μ΅œμ†Œ νž™(Min Heap) λΆ€λͺ¨ λ…Έλ“œμ˜ ν‚€ 값이 μžμ‹ λ…Έλ“œμ˜ ν‚€ 값보닀 μž‘κ±°λ‚˜ 같은 μ™„μ „ 이진 트리

heapimage

κ΅¬ν˜„

  • νž™μ—μ„œμ˜ λΆ€λͺ¨λ…Έλ“œμ™€ μžμ‹ λ…Έλ“œμ˜ 관계

    • μ™Όμͺ½ μžμ‹μ˜ 인덱슀 = λΆ€λͺ¨ 인덱슀 * 2

    • 였λ₯Έμͺ½ μžμ‹μ˜ 인덱슀 = λΆ€λͺ¨ 인덱슀 * 2 + 1

    • λΆ€λͺ¨ 인덱슀 = μžμ‹ 인덱슀 / 2

heapindex

Pythonμ—μ„œλŠ” heapq 라이브러리λ₯Ό 톡해 μ‰½κ²Œ κ΅¬ν˜„ν•  수 μžˆλ‹€

μ‚½μž…

maxheapimg
import heapq
arr = [1,9,7,4,3]
node = 2 #μΆ”κ°€ν•  κ°’
heapq.heappush(node, arr)

μ‚­μ œ

heapremove
import heapq
arr = [1,9,7,4,3]
heapq.heappop(arr)

Last updated