所以这是问题所在: 假设最小堆使用父指针,使得每个节点包含指向其父节点的指针,并且根节点具有空指针。给定一个指向节点的指针,该节点不是树的根,包含堆中的最大密钥,删除的复杂性是多少?
答案是O(1),但这对我没有意义。因为堆总是平衡的,所以不能用相邻节点替换已删除的节点,你必须缩放树的长度O(log N)以找到树中最后输入的节点,对吗?为什么不回答这个问题O(log N)?
例如:
以1,100,2,3,4,5的顺序插入一个堆,其中1为根节点,100和2为子节点,3和4为子节点100和5为子节点2。
删除100将需要将其替换为5,需要O(log N)时间才能访问,对吗?