什么样的操作顺序会给斐波纳契堆最坏的情况?每个节点除最后一个节点外只有一个子节点?
例如:
5
|
6
|
7
|
8
答案 0 :(得分:2)
我认为jpalecek的答案不会产生请求的树。在这里试试:
http://www.cse.yorku.ca/~aaw/Jason/FibonacciHeapAnimation.html
此外,只需插入任意数量的元素然后提取-min一次即可获得相同的结果。无论如何,那不是请求。
要获得您想要的表单,请执行以下操作:
-inf
除了最左边,从最深处开始,从左到右(见下面的演示)。示例:的
7
减少到0
:
5
减少到0
,提取分钟,减少4
到0
,提取分钟,减少3
到0
,提取分钟,将10
减少到0
,提取最小值:
修改强>
我忘了有一个delete
操作使decrease
然后extract min
,所以你可以使用它而不是减少然后提取min 我在上面做
请注意,现在当你有一个“单路径”树时,你可以通过这一系列的O(1)操作轻松地扩展它:
演示(继续示例的最后一步):
1
,0
,-1
:
1
):
所有图片均由this website
创建答案 1 :(得分:-1)
这实际上是最好的情况(正如你所看到的,extract-min总是很容易,因为我们已经订购了元素)。你应该通过以这种方式插入一系列反向排序的元素(也就是说,最小元素将是最后一个)来获得它: