
$≥$ 자식 노드 키)$≤$ 자식 노드 키)완전 이진 트리
부모-자식 인덱스 관계 (0-based index)
(자식 인덱스 - 1) // 2(부모 인덱스 * 2) + 1(부모 인덱스 * 2) + 2[1, 3, 2, 4, 5, 8] 리스트를 트리 구조로 읽기
루트 1 (index 0)의 자식:
(0 * 2) + 1 = 1 → heap[1]은 3(0 * 2) + 2 = 2 → heap[2]은 2노드 3 (index 1)의 자식:
(1 * 2) + 1 = 3 → heap[3]은 4(1 * 2) + 2 = 4 → heap[4]은 5 1
/ \\
3 2
/ \\ /
4 5 8
시간 복잡도
⇒ 새로운 데이터가 추가되거나 기존 데이터가 삭제될 때, '힙의 규칙'을 다시 만족시키도록 구조를 재조정하는 것이 중요함
삽입 (push)
→ 일단 맨 끝에 추가하고, 이길 때까지 위로 올라감
삭제 (pop)
→ 우승자(루트)를 빼내고, 맨 끝의 후보를 데려와 아래로 내려보냄
다익스트라 최단 경로 알고리즘
: 다음으로 탐색할 노드 중, 거리가 가장 짧은 노드를 우선적으로 선택할 때
운영체제 작업 스케줄링
: 여러 작업 중 우선순위가 가장 높은 작업을 먼저 처리할 때
⇒ 파이썬에서는 heapq 모듈이 최소 힙 기반의 우선순위 큐 기능을 기본으로 제공함