Fibonacci堆是否可能包含不是二叉树的树?如果是这样,这会怎么样?你能举个例子吗?
答案 0 :(得分:0)
是的,这可能发生。直观地,原因是在Fibonacci堆中,减少键操作可以通过从较大的树中剪切子树来工作,从而导致两个树(可能)不是二叉树。这与二项式堆不同,其中reduce-key通过从密钥一直减少到根的节点执行冒泡操作来工作。
为了看一个具体的例子,让我们在Fibonacci堆中插入五个元素,比如说1,3,5,7和9.这给了堆
1 - 3 - 5 - 7 - 9
现在,让我们做一个dequeue-min,它提取1.我们现在尝试将所有剩余的元素压缩在一起,它们按如下方式合并树:
3
/|
5 7
|
9
现在,假设我们执行一个减少键操作来减少9到6的键。为此,我们从其父项中删除9并将其合并到顶部的树列表中,这将产生
3 - 6
/|
5 7
现在树根有3只包含3个元素,所以它不再是二叉树了。
希望这有帮助!