최댓값과 최솟값을 빠르게 찾기 위해 고안된 자료구조로, 각 노드의 키 값이 그 자식노드의 키 값보다 작지 않은 힙인 최대힙(max heap)과 각 노드의 키 값이 그 자식노드의 키 값보다 크지 않은 힙인 최소힙(min heap)이 있다.
여기서 키 값의 대소관계는 부모-자식 노드 사이에만 성립하며 형제노드 사이에는 영향을 미치지 않는다. 대부분 완전이진트리를 사용하며 시간복잡도는 O(logN) 이다.
파이썬에서 제공하는 내장모듈로, 일반적인 리스트를 min heap처럼 다룰 수 있게 해준다. 자바의 PriorityQueue
클래스와 비슷하다.
항상 노드들이 정렬된 상태로 추가되고 삭제되며, min heap에서 가장 작은값은 언제나 인덱스 0, 즉, 이진 트리의 루트에 위치한다.
주의할 점은 형제노드 사이에는 대소관계가 정해져 있지 않기 때문에 list[1]과 list[2]의 대소관계는 알 수 없다.