Fibonacci Heap可以有多个具有相同等级(或值或密钥)的节点吗?

时间:2015-05-26 06:55:41

标签: algorithm heap computer-science fibonacci-heap

我正在研究Fibonacci堆,我遇到了一个问题。

我知道任何节点都可以插入到Fibonacci堆中,但是如果新节点的等级(或值或键)等于兄弟节点会怎么样?

1)例如,

   (1) <-minimum root
  /   \
(3)   (5)

如果插入了(1)的节点会发生什么?

(1) --- (1)
       /   \
     (3)   (5)

2)或者在这种情况下会发生什么?

之前:

 (2)-----(4)-----(5)
  |      / \     / \
 (1)   (6) (7) (8) (9)

后:

 (2)-----(4)-----(5)    +     (5)
  |              / \          / \
 (1)           (8) (9)      (1) (2)

新节点树属于哪里?

3)你如何整合(或订购)这种树 - 在根上有一对相等的节点?

 (10) ---- (10) ----- (1) ----- (3) ----- (4)

如果有人能帮我解决斐波纳契堆上的这种小混乱,我将不胜感激。谢谢。

1 个答案:

答案 0 :(得分:0)

具有相同键的节点是可以的。

回想堆属性:对于 min-heap ,每个节点的密钥大于 或相等 其父级的密钥。 (max-heap属性可以类似地定义。)

Fibonacci堆只是这些树的集合。如果多个根具有最小密钥,则任何此类根都可以是最小节点

在你的例子中,(1)和(3)没有错。但是在(2)中,你有树违反了最小堆属性。