▶ 스택과 큐의 결합체이다.
▶ 양쪽 끝에서 항목의 조회, 삽입, 삭제가 가능하다.
<삽입>
<삭제>
<조회>
▶ 우선순위 큐는 들어간 순서에 상관없이 우선순위가 높은 데이터가 먼저 나오는 것 것을 말한다.
▶ 대표적인 예로는 최대값 추출이 있다.
▶ 우선순위 큐를 힙으로 구현한다고 가정할 떄, 힙의 경우 삭제나 삽입 과정에서 모두 부모와 자식 간의 비교만 계속 이루어진다.
▶ 삽입의 시간 복잡도가 배열이나 연결리스트에 비해 힙 기반이 월등하기 때문에, 편차가 심한 배열과 연결리스트보다는 힙으로 구현한다.
▶ 우선순위 큐를 위해 고안된 완전이진트리 형태의 자료구조이다.
▶ 모든 노드에 저장된 값(우선순위)들은 자식 노드들의 것보다 (우선순위가) 크거나 같다.
▶ 결국 힙은 루트 노드에 우선순위가 높은 데이터를 위치시키는 자료구조이다.
최대 힙(Max Heap)은 완전 이진트리이면서, 루트 노드로 올라갈수록 저장된 값이 커지는 구조이다.
최소 힙(Min Heap)은 완전 이진트리이면서, 루트 노드로 올라갈수록 값이 작아지는 구조이다.
**최대 힙, 최소 힙 둘다 루트 노드에는 우선순위가 높은 것이 자리잡게 된다.
1) 삽입 연산
힙에 삽입을 하기 위해서는 힙 트리의 성질을 만족시키면서 새로운 요소를 추가해야 한다.
2) 삭제 연산
힙 트리에서 루트노드가 가장 우선순위가 높으므로 루트 노드를 삭제해야 한다.
참고자료
1) https://chanhuiseok.github.io/posts/ds-4/
2) https://blog.naver.com/PostView.naver?blogId=ericalee97&logNo=222160947582&parentCategoryNo=&categoryNo=65&viewDate=&isShowPopularPosts=true&from=search