我正在研究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)
如果有人能帮我解决斐波纳契堆上的这种小混乱,我将不胜感激。谢谢。
答案 0 :(得分:0)
具有相同键的节点是可以的。
回想堆属性:对于 min-heap ,每个节点的密钥大于 或相等 其父级的密钥。 (max-heap属性可以类似地定义。)
Fibonacci堆只是这些树的集合。如果多个根具有最小密钥,则任何此类根都可以是最小节点。
在你的例子中,(1)和(3)没有错。但是在(2)中,你有树违反了最小堆属性。