최댓값과 최솟값을 빠르게 찾기 위해 고안된 자료구조이다.
heapq 모듈은 이진트리 기반의 최소 힙 자료구조를 제공한다.
각 노드의 키 값이 그 자식노드의 키 값보다 작지 않은 힙
heap = [1,3,5,7,9]
max_heap = []
for h in heap:
heapq.heappush(max_heap, (-h, h))
print(max_heap)
각 노드의 키 값이 그 자식노드의 키 값보다 크지 않은 힙
heap[k] <= heap[2*k+1] and heap[k] <= heap[2*k+2]
import heapq
# heapq 모듈은 리스트를 최소 힙처럼 다룰 수 있도록 해줌
# heapq 모듈을 통해서 원소를 추가하거나 삭제한 리스트가 그냥 최소 힙
heap1 = []
# 힙에 원소 추가
heapq.heappush(heap1, 4)
heapq.heappush(heap1, 1)
heapq.heappush(heap1, 7)
heapq.heappush(heap1, 3)
print(heap) # [1, 3, 7, 4]
# 힙에서 원소 삭제
print(heapq.heappop(heap)) # 1
print(heap) # [3, 4, 7]
heap2 = [4, 1, 7, 3, 8, 5]
heapq.heapify(heap) # 리스트를 힙으로 만드는 함수 heapq.heapify()