斐波那契的所有树木都是二叉树吗?

时间:2012-02-13 03:56:59

标签: data-structures tree heap fibonacci-heap

Fibonacci堆是否可能包含不是二叉树的树?如果是这样,这会怎么样?你能举个例子吗?

1 个答案:

答案 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个元素,所以它不再是二叉树了。

希望这有帮助!