본문 바로가기
개발일지/자료구조+알고리즘

힙(heap) 자료구조

2022. 3. 16.

힙(heap)이란 

- 완전 이진 트리의 일종으로 우선순위 큐를 위하여 만들어진 자료구조이다.
- 여러 개의 값들 중에서 최댓값이나 최솟값을 빠르게 찾아내도록 만들어진 자료구조이다.

- 힙 트리에서는 중복된 값을 허용한다. (이진 탐색 트리에서는 중복된 값을 허용하지 않는다.)

 

힙의 종류

최대 힙(max heap)

부모 노드의 키 값이 자식 노드의 키 값보다 크거나 같은 완전 이진 트리

key(부모 노드) >= key(자식 노드)

최소 힙(min heap)

부모 노드의 키 값이 자식 노드의 키 값보다 작거나 같은 완전 이진 트리

key(부모 노드) <= key(자식 노드)

최대 힙과 최소 힙

 

힙의 구현

힙을 저장하는 표준적인 자료구조는 배열이다.

- 구현을 쉽게 하기 위하여 배열의 첫 번째 인덱스인 0은 사용되지 않는다.
- 특정 위치의 노드 번호는 새로운 노드가 추가되어도 변하지 않는다.
- 예를 들어 루트 노드의 오른쪽 노드의 번호는 항상 3이다.
- 힙에서의 부모 노드와 자식 노드의 관계
- 왼쪽 자식의 인덱스 = (부모의 인덱스) * 2
- 오른쪽 자식의 인덱스 = (부모의 인덱스) * 2 + 1
- 부모의 인덱스 = (자식의 인덱스) / 2

 

자료 출처
https://gmlwjd9405.github.io/2018/05/10/data-structure-heap.html

'개발일지 > 자료구조+알고리즘' 카테고리의 다른 글

다익스트라 알고리즘  (0) 2022.07.08
그래프란  (0) 2022.04.22
해시(Hash)  (0) 2022.02.08