Изменения

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

Биномиальная куча

25 байт убрано, 23:01, 7 июня 2012
extractMin
<code>
Node extractMin(H) {
//поиск корня х с минимальным значением ключа в списке корней Н:
min = <tex>\infty</tex>; x = null; xBefore = null;
curx = H.head; curxBefore = null;
while curx != null
// релаксируем текущий минимум
if curx.key < min
min = curx.key; x = curx; xBefore = curxBefore;
curxBefore = curx; curx = curx.sibling;
//удаление найденного корня x из списка корней деревьев кучи
if (xBefore == null)
H.head = x.sibling;
else
xBefore.sibling = x.sibling;
//построение кучи детей вершины x, при этом изменяем предка соответствующего ребенка на null:
H' = null; curx = x.child; H'.head = x.child;
while curx != null
// меняем указатель на родителя узла curx
p[curx] = null;
// переход к следующему ребенку
curx = curx.sibling;
// слияние нашего дерева с деревом H'
H = merge(H, H'); return x; } 
</code>
Анонимный участник

Навигация