2021. 6. 29. 18:01ㆍ자료구조 (Data Structure)
1. 힙: 힙 성질(heap property)을 만족하는 이진 트리
- 힙은 자식이 꽉꽉 채워져 있어야 한다.
그렇다면 힙성질이란?
- 힙 성질: 모든 부모 노드의 key값은 자식 n노드의 key값 보다 작지 않다.
즉 부모님이 자식보다 더 크다!
그렇다면 root노드의 값이 가장 크다!
2.
트리를 표현하는 방법 중 리스트를 이용하여, 모든 노드를 빈 곳도 다 작성하는 방법 사용시
- 단점: 메모리 낭비가 심하다.(비어있는 곳도 None으로 저장)
- 장점: 자식 노드와 부모 노드의 위치를 알 수 있다.
ex) H = [a, b, c, None, d, e, f] 일때,
H[k]의 왼쪽 자식 노드 : H[k*2+1]
H[k]의 오른쪽 자식 노드 : H[k*2+2]
H[k]의 부모 노드 : H[(k-1)//2]
3.
- 힙성질을 만족하기 위해서 리스트의 왼쪽 끝부터(leaf node) 차근차근 숫자를 내린다.
- 트리를 힙성질을 만족하게 만들기 위해 --> make_heap, heapify_down을 실행


####HEAP과 관련된 여러 연산들
# 1, make_heap: O(n), O(nlogn)
# 2, insert: O(logn)
# 3, find_max: O(1) --> root node가 가장 큰 값임을 이미 안다
# 4, delete_max: O(logn)
# 5, heapify_down: O(h) = O(logn)
# 6, heapify_up: O(h) = O(logn)
'자료구조 (Data Structure)' 카테고리의 다른 글
Hash Table (0) | 2021.07.10 |
---|---|
배열(Array) VS. 리스트(List) (0) | 2021.07.08 |
TREE (트리) (0) | 2021.06.29 |
순차적 자료구조 - QUEUE (0) | 2021.06.28 |
순차적 자료구조 - STACK (0) | 2021.06.28 |