주요 용어
힢 : 부모노드와 자식노드사이의 대소관계가 정의되어 구성되는 완전 이진트리로 우선순위 큐와 같은 결과를 제공함
최대 힢 : 루트가 가장 큰 값을 갖고 부모는 자식보다 큰 값을 가지면 됨
최소 힢 : 루트가 가장 작은 값을 갖고 부모는 자식보다 작은 값을 가지면 됨
01. 우선순위 큐
큐 : 먼저 들어간 데이터가 먼저 삭제되는 자료구조 먼저 줄을 선 사람이 먼저 서비스를 받는 구조
우선순위 큐 : 대기 리스트에서 항상 우선순위가 높은 사람이 먼저 서비스를 받는 구조
우선순위 큐의 작동 방식 :
첫째, 삭제 명령이 실행되면 저장된 데이터 중에서 가장 작은 값(가장 큰 값)이 삭제된다.
둘째, 나머지 데이터들은 어떤 순서로 저장되든 문제가 되지 않는다.
02. 힢
힢의 정의
- 피라미드 모양으로 쌓아 올린 더미
- 무엇인가를 쌓아놓은 더미이고 항상 가장 위에 있는 것을 우선 꺼내는 구조
- 부모-자식 노드사이에서 (부분적으로) 정렬된 포화 이진트리로 부모노드는 자식노드보다 우선순위가 높다.
힢의 추상자료형
힢의 추상 자료형
- 힢 객체의 정의 : 부분적으로 정렬된 완전 이진트리로 부모노드는 자식노드보다 우선순위가 높다.
- 연산 :
① insert(element) ::= 힢에 데이터 삽입
② remove() ::= 힢 (루트)에서 데이터 삭제
③ peek() ::= 힢 (루트)에서 데이터 읽어오기
④ isEmpty() ::= 힢이 비었는지 확인
⑤ size() ::= 힢에 저장한 데이터 개수 확인
힢의 종류 :
최소 힢 :
루트가 전체 노드중에서 최소값인 힙
→ 트리의 모든 노드가 자식 노드보다 작은 값을 가짐
→ 트리의 레벨에 따라 데이터가 순서를 갖지는 않음
→ 탐색 트리처럼 왼쪽 노드와 오른쪽 노드 사이에 크기 제한도 없음
→ 루트가 가장 작은 값을 갖고 부모는 자식보다 작은 값을 가짐
최대 힢 :
루트가 전체 노드중에서 최소값인
→ 트리의 모든 노드가 자식 노드보다 큰 값을 가짐
→ 트리의 레벨에 따라 데이터가 순서를 갖지는 않음
→ 탐색 트리처럼 왼쪽 노드와 오른쪽 노드 사이에 크기 제한도 없음
→ 루트가 가장 큰 값을 갖고 부모는 자식보다 큰 값을 가지면 됨
힢이 아닌 경우
'방송통신대학 > 자료구조' 카테고리의 다른 글
10-1. 선택트리 (0) | 2021.01.01 |
---|---|
9-2. 힢 노드의 삭제 및 삽입 (0) | 2020.12.22 |
8-2. 스레드 트리의 구현 (0) | 2020.12.11 |
8-1. 스레드 트리 (0) | 2020.12.10 |
7-2 이진 트리의 구현,연산, 변환 (0) | 2020.12.04 |