2023-01-19 22:23:19 +01:00
|
|
|
#ifndef VIETER_TREE_NODE
|
|
|
|
#define VIETER_TREE_NODE
|
2023-01-19 21:22:08 +01:00
|
|
|
|
2023-01-19 22:23:19 +01:00
|
|
|
#include "vieter_tree.h"
|
2023-01-19 21:22:08 +01:00
|
|
|
#include <stdint.h>
|
|
|
|
|
|
|
|
typedef struct vieter_tree_node {
|
|
|
|
uint64_t key;
|
|
|
|
void *data;
|
2023-01-19 22:23:19 +01:00
|
|
|
struct vieter_tree_node *parent;
|
2023-01-19 21:22:08 +01:00
|
|
|
struct vieter_tree_node *left;
|
|
|
|
struct vieter_tree_node *right;
|
|
|
|
} vieter_tree_node;
|
|
|
|
|
2023-01-19 22:23:19 +01:00
|
|
|
vieter_tree_node *vieter_tree_node_init();
|
|
|
|
|
2023-01-19 22:45:22 +01:00
|
|
|
vieter_tree_error vieter_tree_node_insert(vieter_tree_node *root, uint64_t key, void *data);
|
2023-01-19 22:23:19 +01:00
|
|
|
|
2023-01-19 22:45:22 +01:00
|
|
|
vieter_tree_error vieter_tree_node_search_node(vieter_tree_node **out, vieter_tree_node *root, uint64_t key);
|
|
|
|
vieter_tree_error vieter_tree_node_search(void **out, vieter_tree_node *root, uint64_t key);
|
2023-01-19 22:23:19 +01:00
|
|
|
|
2023-01-19 22:45:22 +01:00
|
|
|
vieter_tree_error vieter_tree_node_remove(void **out, vieter_tree_node *root, uint64_t key);
|
|
|
|
|
|
|
|
vieter_tree_node *vieter_tree_node_successor(vieter_tree_node *node);
|
|
|
|
|
|
|
|
void vieter_tree_node_replace(vieter_tree_node *to_replace, vieter_tree_node *replacement);
|
2023-01-19 22:23:19 +01:00
|
|
|
|
2023-01-19 21:22:08 +01:00
|
|
|
#endif
|