Computer science 在O(1)时间内使用父指针在堆中删除?

Computer science 在O(1)时间内使用父指针在堆中删除?,computer-science,heap,big-o,Computer Science,Heap,Big O,所以问题是: 假设as min heap使用父指针,这样每个节点都包含一个指向其父节点的指针,而根节点有一个空指针。给定一个指向节点的指针,该节点不是树的根,在堆中包含max键,那么删除的复杂性是什么 答案是O(1),但这对我来说没有意义。因为堆始终是平衡的,所以不能用相邻节点替换删除的节点,必须缩放树的长度O(logn)才能找到树中最后输入的节点,对吗?为什么这个问题的答案不是O(logn) 例如: 按1、100、2、3、4、5顺序插入的堆,其中1作为根节点,100和2作为子节点,3和4作为1

所以问题是: 假设as min heap使用父指针,这样每个节点都包含一个指向其父节点的指针,而根节点有一个空指针。给定一个指向节点的指针,该节点不是树的根,在堆中包含max键,那么删除的复杂性是什么

答案是O(1),但这对我来说没有意义。因为堆始终是平衡的,所以不能用相邻节点替换删除的节点,必须缩放树的长度O(logn)才能找到树中最后输入的节点,对吗?为什么这个问题的答案不是O(logn)

例如:

按1、100、2、3、4、5顺序插入的堆,其中1作为根节点,100和2作为子节点,3和4作为100的子节点,5作为2的子节点


删除100需要将其替换为5,这需要O(logn)时间才能访问,对吗?

您要寻找的概念是“摊销固定时间”-即平均值为O(1)-即使有时单个操作需要更长的时间,如上面的示例所示。请看问题的扩展说明。

我对摊销是随时间推移的应用的理解是否正确?也就是说,如果问题要求删除一次最坏情况,那么它应该是O(logn)?是。在这种情况下,一个最坏的删除实例是O(logn)。通常认为单个实例不如大量实例重要,因为O()符号对于大型数据收集最为重要。