Computer >> 컴퓨터 >  >> 프로그램 작성 >> 프로그램 작성

데이터 구조의 최대 힙에서 삭제


여기서 바이너리 최대 힙 데이터 구조에서 요소를 삭제하는 방법을 볼 것입니다. 초기 트리가 아래와 같다고 가정 -

데이터 구조의 최대 힙에서 삭제

삭제 알고리즘

delete(heap, n) −
Begin
   if heap is empty, then exit
   else
      item := heap[1]
      last := heap[n]
      n := n – 1
      for i := 1, j := 2, j <= n, set i := j and j := j * 2, do
         if j < n, then
            if heap[j] < heap[j + 1], then j := j + 1
         end if
         if last >= heap[j], then break
         heap[i] := heap[j]
      done
   end if
   heap[i] := last
End
이면 끝

예시

최종 힙에서 30개를 삭제한다고 가정해 보겠습니다. -

데이터 구조의 최대 힙에서 삭제