Heap이란
완전 이진 트리 기반의 자료구조이다.
* 완전 이진 트리 : 마지막 레벨을 제외한 모든 레벨의 노드가 채워져 있는 형태
여러 값들 중 최소값과 최대값 탐색에 특화되어 있다. 그렇기에 힙은 정렬된 상태가 아니다.
힙 트리에서는 중복값을 허용한다. (이진 탐색 트리는 중복 허용 x)
힙의 종류
1. 최대 힙 (Max Heap)
부모 노드 ≥ 자식 노드 → 루트가 최댓값
즉, 부모 노드의 키 값이 자식 노드의 키 값보다 크거나 같은 완전 이진 트리

2. 최소 힙 (Min Heap)
부모 노드 ≤ 자식 노드 → 루트가 최솟값
부모 노드의 키 값이 자식 노드의 키 값보다 작거나 같은 완전 이진 트리

힙의 구현
힙은 배열 기반으로 이루어져 있다.
힙의 인덱스는 위에서 부터 아래로 내려오고 왼쪽에서 오른쪽으로 가면서 증가한다.
힙의 삽입

힙의 삭제

힙의 삭제는 항상 맨 앞에 노드 (루트 노드)에서 일어난다.
힙의 시간복잡도
| insert (삽입) | O(log n) | 새 요소를 마지막에 넣고 위로 올라가며(heapify up) 위치 조정 |
| delete (삭제) | O(log n) | 루트 제거 후 마지막 요소를 루트에 넣고 아래로 내려가며(heapify down) 위치 조정 |
| peek (최상단 확인) | O(1) | heap[0] 접근만 하므로 상수 시간 |
| build heap (n개로 초기 힙 만들기) | O(n) | heapify를 아래에서 위로 실행하면 선형 시간 가능 |
힙은 완전 이진 트리라서 높이 = log₂(n) 수준이다.
'개인공부 > 자료구조' 카테고리의 다른 글
| 트리의 구조와 개념 (용어) (0) | 2025.09.04 |
|---|---|
| [자료구조] 트리 (0) | 2025.06.02 |
| [자료구조] 우선순위 큐 (5) | 2025.05.30 |
| [자료구조] 해시 (Hash) (0) | 2025.05.29 |
| [자료구조] Queue (1) | 2025.05.29 |