39 lines
1.0 KiB
C
39 lines
1.0 KiB
C
#include "vieter_heap_tree.h"
|
|
|
|
vieter_heap_node *vieter_heap_node_init() {
|
|
return calloc(1, sizeof(vieter_heap_node));
|
|
}
|
|
|
|
vieter_heap_node *vieter_heap_node_merge_same_order(vieter_heap_node *root_a,
|
|
vieter_heap_node *root_b) {
|
|
vieter_heap_node *new_root, *new_child;
|
|
|
|
if (root_a->key <= root_b->key) {
|
|
new_root = root_a;
|
|
new_child = root_b;
|
|
} else {
|
|
new_root = root_b;
|
|
new_child = root_a;
|
|
}
|
|
|
|
new_root->next_largest_order = new_root->largest_order;
|
|
new_root->largest_order = new_child;
|
|
|
|
return new_root;
|
|
}
|
|
|
|
vieter_heap_tree *vieter_heap_tree_init(vieter_heap_node *root,
|
|
vieter_heap_tree *next,
|
|
uint64_t order) {
|
|
vieter_heap_tree *tree = malloc(sizeof(vieter_heap_tree));
|
|
|
|
tree->root = root;
|
|
tree->next = next;
|
|
tree->order = order;
|
|
|
|
return tree;
|
|
}
|
|
|
|
vieter_heap_tree *vieter_heap_tree_merge(vieter_heap_tree *tree_a,
|
|
vieter_heap_tree *tree_b) {}
|