Модуль heapq
использует стандартные списки Python в качестве базовой структуры данных, поэтому после этого вы можете просто снова использовать стандартные методы list
remove()
и heapify()
. Обратите внимание, что для этого потребуется линейное время.
# Create example data and heapify
a = range(10)
a.reverse()
heapq.heapify(a)
print a
# remove an element and heapify again
a.remove(5)
heapq.heapify(a)
print a
Вы можете улучшить производительность кучи еще раз, используя недокументированную функцию heapify._siftup()
, но весь процесс все равно будет O (n), поскольку list.remove()
- это O (n).