힙
-> 데이터에서 최대값과 최소값을 빠르게 찾기 위해 고안된 완전 이진 트리
완전 이진 트리
-> 노드를 삽입할 때 최하단 왼쪽 노드부터 차례대로 삽입하는 트리
힙을 사용하는 이유
-> 1) 배열에 데이터를 넣고, 최대값과 최소값을 찾으려면 O(n)이 걸림, 이에 반해 힙에 데이터를 넣고, 최대값과 최소값을 찾으면 O(log n)이 걸림
-> 2) 우선 순위 큐와 같이 최대값 또는 최소값을 빠르게 찾아야 하는 자료구조 및 알고리즘 구현 등에 활용됨
힙 구조
-> 힙은 최대값을 구하기 위한 최대힙, 최소값을 구하기 위한 최소힙으로 분류
힙의 조건
-> 각 노드의 값은 해당 노드의 자식 노드가 가진 값보다 크거나 같다( 최대힙 )
-> 각 노드의 값은 해당 노드의 자식 노드가 가진 값보다 크거나 작음( 최소힙 )
-> 완전 이진트리의 형태
힙과 이진 탐색 트리의 공통점과 차이점
-> 힙과 이진 탐색 트리는 모두 이진 트리임
-> 힙은 각 노드의 값이 자식 노드보다 크거나 같음
-> 이진 탐색 트리는 왼쪽 자식 노드의 값이 가장 작고, 그 다음 부모 노드, 그 다음 오른쪽 자식 노드 값이 가장 큼
-> 힙은 이진 탐색 트리의 조건인 자식 노드에서 작은 값은 왼쪽, 큰 값은 오른쪽이라는 조건은 없음
-> 힙의 왼쪽 및 오른쪽 자식 노드의 값은 오른쪽이 클 수도, 왼쪽이 클 수도 있음
-> 이진 탐색 트리는 탐색을 위한 구조, 힙은 최대/최소값 검색을 위한 구조 중 하나로 이해
'Algorithms > 패캠 알고리즘 강의' 카테고리의 다른 글
힙(2-1) (0) | 2020.01.22 |
---|---|
힙(2) (0) | 2020.01.21 |
시간 복잡도(2) (0) | 2020.01.21 |
시간 복잡도(1) (0) | 2020.01.20 |
연결리스트(4) (0) | 2020.01.17 |