1

来自https://www.tutorialspoint.com/heap-queue-or-heapq-in-python

heappush - 这个函数在不改变当前堆的情况下向堆中添加一个元素。

如果当前堆没有改变,我们为什么不使用append()列表方法呢?新元素的列表是否仅在heappop()被调用时才被堆积?

我是否误解了“不改变当前堆”?或者是其他东西?

4

1 回答 1

1

不是官方参考文档。所以它包含了作者想要写的东西。

如果您查阅官方Python 标准库参考资料,您会发现:

heapq.heappush(heap, item):将值项推送到堆上,保持堆不变。

这里发生的事情很清楚:新项目被添加到集合中,内部结构最终适应了二叉树:每个父节点的值小于或等于其任何子节点。

再看一遍教程后,我认为这意味着heappush添加新元素而不改变堆上的其他元素,反对heappopheapreplace删除当前较小的项目。

于 2020-07-01T14:59:28.247 回答