从数据结构中的最大堆中删除
我们将在本文中了解如何从二叉最大堆数据结构中删除元素。假设初始树如下所示:
删除算法
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:
广告