자료구조 9화를 듣고 배운내용
KEYWORDS
- 힢(Heap): 부모노드와 자식노드가 대소관계로 구성되는 완전 이진트리.
우선순위 큐와 같은 결과 - 최대힢: 루트가 가장 큰 값을 갖고, 부모노드가 자식노드보다 큰 값을 가지면 된다.
- 최소힢: 루트가 가장 작은 값을 갖고, 부모노드가 자식노드보다 작은 값을 가지면 된다.
큐
먼저 들어간 데이터가 먼저 삭제되는 자료구조
먼저 줄을 선 사람이 먼저 서비스를 받는 구조
우선순위 큐
대기 리스트에서 우선순위가 높은 사람이 먼저 서비스를 받는 구조
삭제시
저장된 데이터 중에서 우선순위가 높은 데이터를 삭제한다.
나머지 데이터는 어떻게 저장되던 상관없다.
Heap
우선순위 큐를 구현할 때 힢이 제일 효과가 좋다고 한다.
피라미드 모양으로 쌓은 더미
쌓아놓은 더미에서 항상 가장 위에 있는 것을 우선 꺼내는 구조
부모-자식 노드사이에서 정렬된 완전트리로,
부모노드는 자식노드보다 우선순위가 높다.
최소 힢
모든 노드가 자식 노드보다 작은 값을 가진다.
왼쪽에 큰게 오던, 오른쪽에 큰게 오던 상관없다.
루트가 가장 작은 값을 갖는다.
최대 힢
최소 힢 잘 이해하고 반대로 생각하면 되겠다.
힢이 아닌 경우
- 완전 이진트리가 아닌경우
- 부모가 자식보다 작거나, 부모가 자식보다 크거나 일관성 있게 되어있어야 된다.
힢 구현
배열을 이용한 힢의 구현
힢은 완전 이진트리이기 때문에 배열로 구현해도 기억장소 낭비 없다
- 연결 리스트보다 실행 속도 면에서 효율적
- 기억장소 측면에서도 장점을 가진다.
힢 노드 삭제
- 프론트가 가르키는 것(루트 값)을 삭제한다.
- 프론트가 삭제되면, 맨 밑에 노드를 프론트로 올린다.
- 자식 노드와 비교하며 제자리 찾아준다.
힢 노드 삽입
- 마지막에 노드 삽입 Cause 완전 이진트리 만들기 때문에
- 부모 노드와 비교하면서 제자리 찾아주기
'Computer Science > Data Structure :: 자료구조' 카테고리의 다른 글
자료구조 강의 11화 :: 이진 탐색 트리, SPLAY 트리, 균형 트리 (0) | 2021.10.18 |
---|---|
자료구조 강의 10화 :: 선택트리, 승자트리, 패자트리, 숲 (0) | 2021.10.11 |
자료구조 강의 8화 :: 스레드 트리 (0) | 2021.09.27 |
자료구조 강의 7화 :: 이진 트리, 포화 이진, 완전 이진 (0) | 2021.09.20 |
자료구조 강의 6화 :: 단순 연결, 이중 연결, 원형 연결 리스트 (0) | 2021.09.20 |