libvieter/src/heap/vieter_heap_tree.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) {}