더북(TheBook)

트리 생성은 자식 노드에서 부모 노드로 가는 상향식으로 작동한다. 이런 특정 트리의 왼쪽 서브 트리는 다음과 같은 연산의 결과이며, 이와 같은 방식으로 계속하면 전체 트리를 만들 수 있다.

n1CreateTree(7, NULL, NULL)

n2CreateTree(1, NULL, NULL)

n3CreateTree(5, n1, n2)

인코딩을 생성하는 데 필요한 두 번째 자료 구조는 우선순위 큐(priority queue)다. 우선순위 큐는 아이템을 제거할 때 최대 우선순위 큐인지 또는 최소 우선순위 큐인지에 따라 가장 큰 값(max-priority) 또는 가장 작은 값(min-priority)을 갖는 아이템을 먼저 제거한다. 최대 우선순위 큐는 아이템을 제거할 때 가장 큰 값을 갖거나 우선순위가 가장 높은 아이템을 제거한다. 그다음 다시 아이템을 제거할 때는 남아 있는 아이템에서 가장 큰 값을 갖는 아이템을 제거하므로 제거되는 아이템은 두 번째 우선순위인 아이템이다. 역으로 최소 우선순위 큐에서는 가장 낮은 우선순위를 갖는 아이템을 제거하고 그다음 두 번째로 낮은 우선순위의 아이템을 제거하는 식이다. 결국 우선순위 큐는 다음 연산을 따른다.

CreatePQ() 빈 우선순위 큐를 생성한다.

InsertInPQ(pq,i) 우선순위 큐 pq에 아이템 i를 삽입한다.

FindMinInPQ(pq) 또는 FindMaxInPQ(pq) 최소 우선순위 큐에서는 큐에 있는 아이템 중 최솟값을 반환하고 최대 우선순위 큐에서는 큐에 있는 아이템 중 최댓값을 반환한다. FindMinInPQ(pq)와 FindMaxInPQ(pq)는 최솟값 또는 최댓값을 반환하지만, 큐를 변경하지 않으며 값도 그대로 남아 있다.

ExtractMinFromPQ(pq) 또는 ExtractMaxFromPQ(pq) 최소 우선순위 큐에서는 큐에 있는 아이템 중 최솟값을 제거하고 반환하며, 최대 우선순위 큐에서는 큐에 있는 아이템 중 최댓값을 제거하고 반환한다.

SizePQ(pq) 우선순위 큐 pq에 있는 아이템 수를 반환한다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.