우선순위 큐 (Priority Queue)
: 우선순위가 높은 데이터가 먼저 반환되는 자료구조
- 힙으로 구현
배열, 리스트 : 삽입 시 모든 데이터 탐색해야 하므로 시간복잡도 O(n)
힙 : 삭제, 삽입 시 부모-자식 비교 반복 → 트리의 높이가 하나 증가할 때마다 비교 연산 횟수는 1회 증가하여 시간복잡도 O(logn)
힙 (Heap)
- 특징
완전이진트리
모든 노드에 저장된 값(우선순위)들은 자식 노드들 값보다 크거나 같음
루트노드가 가장 큰 우선순위를 가짐
힙을 구현하는 일반적인 자료구조 => 배열
- 종류
- 최대 힙
값이 클수록 우선순위가 높은 완전이진트리
- 최소 힙
값이 작을수록 우선순위가 높은 완전이진트리
- 구현
- 삽입(저장)
새 노드를 우선순위가 가장 낮다는 가정으로 맨 끝 위치에 삽입시킨 후 부모노드와 비교해가며 제자리로 위치시킴 (=heapify)
- 삭제
1. 우선순위가 가장 높은 데이터를 pop함
2. 마지막 노드를 루트노드에 대입한 후, 자식노드들과 비교하며 제자리로 위치시킴
참고
'Programming > 알고리즘' 카테고리의 다른 글
[백준/자바] 백트래킹 9663번 - N-Queen (0) | 2024.02.21 |
---|---|
[백준/자바] dp 11053번 - 가장 긴 증가하는 부분 수열 (0) | 2024.02.17 |
[백준/자바] 트리 1967번 - 트리의 지름 (0) | 2023.06.03 |
[자료구조] 이진 탐색 트리 (0) | 2023.06.02 |
[자료구조] 트리 - 이진 트리 유형 (0) | 2023.05.24 |