#include "node.h" vieter_tree_node *vieter_tree_node_init() { return calloc(1, sizeof(vieter_tree_node)); } vieter_tree_error vieter_tree_node_insert(vieter_tree_node *node, uint64_t key, void *data) { vieter_tree_node *parent = node; while (node != NULL) { if (node->key == key) { return vieter_tree_already_present; } parent = node; if (key < node->key) { node = parent->left; } else { node = parent->right; } } vieter_tree_node *new_node = vieter_tree_node_init(); new_node->key = key; new_node->data = data; new_node->parent = parent; if (key < node->key) { parent->left = new_node; } else { parent->right = new_node; } return vieter_tree_ok; } vieter_tree_error vieter_tree_node_search(void **out, vieter_tree_node *node, uint64_t key) { while (node != NULL) { if (node->key == key) { *out = node->data; return vieter_tree_ok; } if (key < node->key) { node = node->left; } else { node = node->right; } } return vieter_tree_not_present; } vieter_tree_error vieter_tree_node_remove(void **out, vieter_tree_node *node, uint64_t key) { return vieter_tree_not_present; }