Изменения

Перейти к: навигация, поиск

Фибоначчиева куча

322 байта добавлено, 01:03, 10 марта 2012
Структура
** <tex>x.degree</tex> — поле, в котором хранится количество дочерних узлов;
** <tex>x.mark</tex> — логическое значение, которое указывает, были ли потери узлом <tex>x</tex> дочерних узлов, начиная с момента, когда <tex>x</tex> стал дочерним узлом какого-то другого узла.
* Дочерние узлы <tex>x</tex> объединены при помощи указателей <tex>left</tex> и <tex>right</tex> в [[Список#Циклический список |циклический ]] [[Список#Двусвязный список | двусвязный список]].* Корни всех деревьев в <tex>H</tex> связаны при помощи указателей <tex>left</tex> и <tex>right</tex> в [[Список#Циклический список |циклический ]] [[Список#Двусвязный список | двусвязный список ]] корней.
* Обращение к <tex>H</tex> выполняется посредством указателя <tex>H.min</tex> на корень дерева с минимальным ключом. Этот узел называется минимальным узлом <tex>H</tex>.
* Текущее количество узлов в <tex>H</tex> хранится в <tex>H.size</tex>.
[[Список#Циклический список | Циклический]] [[Список#Двусвязный список | двусвязный список ]] обладает двумя преимуществами для использования в фибоначчиевых кучах. Во-первых, удаление элемента из такого списка выполняется за время <tex>O(1)</tex>. Во-вторых, если имеется два таких списка, их легко объединить в один за то время <tex>O(1)</tex>.
== Потенциал ==
403
правки

Навигация