6 #ifndef TAPKEE_FIBONACCI_H_
7 #define TAPKEE_FIBONACCI_H_
17 namespace tapkee_internal
77 for (
int i = 0; i <
Dn; i++)
102 if(
nodes[index]->index != -1)
156 child = min_node->
child;
157 while(child != NULL && child->
parent != NULL)
159 next_child = child->
right;
177 if(min_node == min_node->
right)
187 result = min_node->
index;
188 ret_key = min_node->
key;
218 if(
nodes[index]->index == -1)
236 if(
nodes[index]->index == -1)
238 if(key >
nodes[index]->key)
246 if(parent != NULL &&
nodes[index]->key < parent->key)
252 if(
nodes[index]->key < min_root->key)
271 up_node->
left = up_node;
272 up_node->
right = up_node;
300 for(
int i = 0; i <
Dn; i++)
340 for(
int i = 0; i <
Dn; i++)
401 if(parent->
child == child)
404 if(parent->
child == child)
405 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