6 #ifndef TAPKEE_FIBONACCI_H_
7 #define TAPKEE_FIBONACCI_H_
17 namespace tapkee_internal
77 for (
int i = 0; i <
Dn; i++)
103 if(
nodes[index]->index != -1)
157 child = min_node->
child;
158 while(child != NULL && child->
parent != NULL)
160 next_child = child->
right;
178 if(min_node == min_node->
right)
188 result = min_node->
index;
189 ret_key = min_node->
key;
219 if(
nodes[index]->index == -1)
237 if(
nodes[index]->index == -1)
239 if(key >
nodes[index]->key)
247 if(parent != NULL &&
nodes[index]->key < parent->key)
253 if(
nodes[index]->key < min_root->key)
272 up_node->
left = up_node;
273 up_node->
right = up_node;
301 for(
int i = 0; i <
Dn; i++)
341 for(
int i = 0; i <
Dn; i++)
402 if(parent->
child == child)
405 if(parent->
child == child)
406 parent->
child = NULL;
void cut(fibonacci_heap_node *child, fibonacci_heap_node *parent)
fibonacci_heap_node ** nodes
int extract_min(ScalarType &ret_key)
fibonacci_heap_node * left
int get_num_nodes() const
fibonacci_heap(int capacity)
void add_to_roots(fibonacci_heap_node *up_node)
double ScalarType
default scalar value (can be overrided with TAPKEE_CUSTOM_INTERNAL_NUMTYPE define) ...
int get_key(int index, ScalarType &ret_key)
fibonacci_heap_node * parent
void decrease_key(int index, ScalarType &key)
fibonacci_heap_node & operator=(const fibonacci_heap_node &fh)
void insert(int index, ScalarType key)
fibonacci_heap_node * child
fibonacci_heap & operator=(const fibonacci_heap &fh)
void cascading_cut(fibonacci_heap_node *tree)
void clear_node(int index)
void link_nodes(fibonacci_heap_node *y, fibonacci_heap_node *x)
fibonacci_heap_node * min_root
the class fibonacci_heap, a fibonacci heap. Generally used by Isomap for Dijkstra heap algorithm ...
fibonacci_heap_node * right