728x90
히프 (Heap)
- 루트 노드가 언제나 그 트리의 최대값 혹은 최소값을 가지는 완전 이진 트리
- 최대 트리 : 노드의 키 값이 자식 노드 키 값보다 크거나 같음
- 최소 트리 : 노드의 키 값이 자식 노드 키 값보다 작거나 같음
- 힙 최초 구성 시 시간 복잡도 : O($n log {n}$)
- 우선순위 큐를 만드는데 사용!
- 트리의 최대값, 혹은 최소값을 반환하는 것이 주된 기능
1. 최대 히프 (Max Heap)
- 완전 이진 트리 & 최대 트리
- 부모 노드 키값 >= 자식 노드 키값
- 루트 노드 : 최대값
- 언제나 최대값이 반환됨
2. 최소 트리 (Min Heap)
- 완전 이진 트리 & 최소 트리
- 부모 노드 키값 <= 자식 노드 키값
- 루트 노드 : 최소값
- 언제나 최소값이 반환됨
최대 히프의 삽입 연산
- 히프의 맨 마지막 노드에 임시로 값을 삽입
- 부모 노드와 값을 비교 후 부모 노드보다 값이 크다면 부모 노드와 위치 바꿈
- 반복
최대 히프의 삭제 연산
- 최대 히프에서 삭제는 '루트 노드'만 가능
- '루트 노드' 의 값(최대값) 을 반환 이후 나머지 노드들이 '완전 이진 트리 & 최소트리'의 조건을 만족하도록 재배열
- 루트 노드 삭제
- 가장 마지막 노드의 값을 임시로 루트 노드로 이동
- 왼쪽, 오른쪽 자식 노드와 비교하여서 본인이 값이 더 작다면 swap (왼쪽, 오른쪽 자식 노드 중 값이 더 큰 노드와 swap)
- 반복
728x90
'Computer Science > 자료구조' 카테고리의 다른 글
[자료구조] 그래프 (Graph) (0) | 2020.09.15 |
---|---|
[자료구조] 이진 탐색 트리 (Binary Search Tree) (0) | 2020.09.15 |
[자료구조] 이진 트리 순회(Traversal) (0) | 2020.09.15 |
[자료구조] 이진 트리 (Binary Tree) (0) | 2020.09.08 |
[자료구조] 트리 (Tree) (0) | 2020.08.31 |
댓글