자료구조와 알고리즘/자료구조
[C언어] Tree / Heap 힙 구현 - 2편
jaewpark
2021. 9. 11. 12:45
Heap
우선순위 큐를 구현하기 위한 자료구조, 완전 이진 트리의 형태로 구성
최대값 및 최솟값을 찾아내는 연산을 빠르기 하기 위한 용도로 사용
큐는 여기 글에서 설명이 되어있고, 우선순위 큐는 먼저 들어온 데이터가 아닌 우선순위가 높은 데이터가 먼저 나가는 형태
특징
- 완전이진트리의 형태
- 부모노드와 자식노드 간에만 대소 관계가 성립(형제 사이에는 정해지지 않는다)
- 중복된 값 허용
복잡도
Max Heap (최대 힙)
- 부모노드의 키값이 자식노드의 키값보다 항상 큰 힙
- 루트노드의 값은 최대값
Min Heap (최소 힙)
- 부모노드의 키값이 자식노드의 키값보다 항상 작은 힙
- 루트노드의 값은 최솟값
연산
- createHeap() : 히프 생성
- deleteHeap() : 히프 삭제
- insert() : 자료 추가
- 트리의 마지막 자리에 임시 저장
- 부모 노드와 키 값 비교 및 이동
히프 시각적으로 표현
- remove() : 자료 제거
- 루트노드의 삭제
- 트리 마지막 자리 노드의 임시 이동
- 자식 노드와 키 값 비교 및 이동 (우선 순위가 높은 자식 노드와 위치 교환)
- find() : 루트값 반환
코드 구현
더보기
기입할 예정