본문 바로가기

플밍 is 뭔들/자료구조

05-6 힙

※ 힙(heap)
 - 완전 이진 트리에 있는 노드 중에서 키값이 가장 큰 노드나 키값이가장 작은 노드를 찾기 위해 만든 자료구조.
 - 키값이 가장 큰 노드를 찾기 위한 힙을 최대 힙(Max Heap) : 부모 노드의 키값 >= 자식노드의 키값
 - 키값이 가장 작은 노드를 찾기 위한 힙을 최소 힙(Min Heap) : 부모 노드의 키값 <= 자식노드의 키값
 - 완전 이진 트리로써 일반적인 힙은 최대 힙을 의미하며 같은 키값의 노드가 중복 될 수 있다.



※ 힙에서의 삽입연산
 - 완전 이진트리의 형태를 유지해야 하고 부모노드의 자식 노드간의 크기의 조건도 유지해야 한다.
   일단 완전이진 트리를 만족하기 위해 마지막 노드의 자리에 삽입 연산을 한다. 그런 후 크기 조건이 맞으면 그냥 삽입하      고 크기 조건이 맞지 않으면 키값을 바꾸어 크기 조건에 맞게 정렬을 해주어야 된다.


※ 힙에서의 삭제연산
 - 힙에서 삭제연산은 루트 노드에 있는 원소를 반환하고 삭제한다.
   즉 최대값 아니면 최소값을 반환한다.
   루트 노드를 반환하고 삭제한 후에도 완전 이진트리의 형태와 노드 키값의 조건을 만족해야 된다.
 - 완전 이진트리의 형태를 만족하기 위해서는 루트노드를 삭제한 후에 마지막 노드를 루트노드 자리에 삽입해준다.
   그런 후 노드 키값의 조건을 맞추기위해 정렬을 한다.


※ 순차 자료구조 방식을 이용한 힙의 구현
 - 1차원 배열의 순차 자료구조 방식을 이용하면 배열 인덱스의 관계를 바탕으로 부모노드를 쉽게 찾을 수 있다.



'플밍 is 뭔들 > 자료구조' 카테고리의 다른 글

06-1 그래프의 구조  (0) 2016.11.25
05-7 힙의 구현  (0) 2016.11.25
05-5 이진 탐색 트리 구현  (0) 2016.11.25
05-4 이진 탐색 트리  (0) 2016.11.25
05-3 이진 트리의 구현 및 순회  (0) 2016.11.25