✅ 비선형 자료구조 : i 번째 값을 탐색한 뒤의 i+1이 정해지지 않은 구조
완전 이진트리의 일종으로 우선순위 큐를 위해 만들어진 자료구조. 일종의 반정렬 상태를 유지한다.
힙 트리 중복 값을 허용한다.
우선순위 큐 : 우선순위의 개념을 큐에 도입. 데이터들이 우선순위를 가지고 있어서 우선순위가 높은 데이터가 먼저 나간다.
반 정렬 상태 : 어려 값 중에서 최댓값과 최솟값을 빠르게 찾도록 만들어진 자료구조이다.
최대 힙(Max Heap)
최소 힙(Min Heap)
힙을 다루는 표준 자료구조는 배열이다. 높이 순서대로 조회하면 모든 노드를 배열에 낭비 없이 배치할 수 있다. 때문에 특정 위치의 노드 번호는 새로운 노드가 추가되어도 변하지 않는다.
트리의 배열 구현의 경우 대부분 계산을 편하게 하기 위해 인덱스를 1부터 사용한다(0 인덱스는 비워둔다).
부모 노드와 자식 노드 찾기
1. 가장 끝 자리에 노드를 삽입한다.
2. 그 노드와 부모 노드를 비교한다.
3. 규칙에 맞으면 그대로 두고, 그렇지 않으면 부모와 교환한다.
4. 규칙에 맞을 때까지 3번 과정을 반복한다.
최소 힙일 때
최댓값 혹은 최솟값이 저장된 루트 노드만 제거할 수 있다.
1. 루트 노드를 제거한다.
2. 루트 자리에 가장 마지막 노드를 삽입한다.
3. 올라간 노드와 그의 자식 노드들과 비교한다.
4. 조건에 맞으면 그대로 두고, 그렇지 않으면 자식과 교환한다.
최대 힙
최소 힙
5. 조건을 만족할 때까지 4번 과정을 반복한다.
우선순위 큐의 사용 사례
출처 및 참고