forked from vieter-v/libvieter
chore(tree): some small cleanups
parent
bee520a781
commit
ef5037f941
|
@ -1,5 +1,6 @@
|
|||
#include "vieter_tree_internal.h"
|
||||
#include "vieter_tree_node.h"
|
||||
#include "vieter_tree_balancing.h"
|
||||
|
||||
struct vieter_tree {
|
||||
uint64_t size;
|
||||
|
|
|
@ -46,13 +46,6 @@ void vieter_tree_node_set_child(vieter_tree_node *parent,
|
|||
}
|
||||
}
|
||||
|
||||
void vieter_tree_node_replace_with_child(vieter_tree_node *to_replace,
|
||||
vieter_tree_node *replacement) {
|
||||
to_replace->key = replacement->key;
|
||||
to_replace->data = replacement->data;
|
||||
vieter_tree_node_set_children(to_replace, replacement->children);
|
||||
}
|
||||
|
||||
vieter_tree_error vieter_tree_node_insert(vieter_tree_node *root, uint64_t key,
|
||||
void *data) {
|
||||
vieter_tree_node *node = root;
|
||||
|
|
|
@ -20,10 +20,19 @@ typedef struct vieter_tree_node {
|
|||
uint8_t flags;
|
||||
} vieter_tree_node;
|
||||
|
||||
/*
|
||||
* Allocate a new node.
|
||||
*/
|
||||
vieter_tree_node *vieter_tree_node_init();
|
||||
|
||||
/*
|
||||
* Free an allocated node.
|
||||
*/
|
||||
void vieter_tree_node_free(vieter_tree_node *node);
|
||||
|
||||
/*
|
||||
* Insert a new key into the given tree.
|
||||
*/
|
||||
vieter_tree_error vieter_tree_node_insert(vieter_tree_node *root, uint64_t key, void *data);
|
||||
|
||||
/*
|
||||
|
@ -31,20 +40,41 @@ vieter_tree_error vieter_tree_node_insert(vieter_tree_node *root, uint64_t key,
|
|||
*/
|
||||
vieter_tree_error vieter_tree_node_search_node(vieter_tree_node **out, vieter_tree_node *root, uint64_t key);
|
||||
|
||||
/*
|
||||
* Search for the data represented by the given key.
|
||||
*/
|
||||
vieter_tree_error vieter_tree_node_search(void **out, vieter_tree_node *root, uint64_t key);
|
||||
|
||||
/*
|
||||
* Remove the data associated with the given key.
|
||||
*/
|
||||
vieter_tree_error vieter_tree_node_remove(void **out, vieter_tree_node **root_ptr, uint64_t key);
|
||||
|
||||
void vieter_tree_node_replace_with_child(vieter_tree_node *to_replace, vieter_tree_node *replacement);
|
||||
|
||||
/*
|
||||
* Set a node's bit flag to the given value.
|
||||
*/
|
||||
void vieter_tree_node_set(vieter_tree_node *node, vieter_tree_node_flag flag, bool value);
|
||||
|
||||
/*
|
||||
* Get whether a node's bit flag is set.
|
||||
*/
|
||||
bool vieter_tree_node_get(vieter_tree_node *node, vieter_tree_node_flag flag);
|
||||
|
||||
/*
|
||||
* Add a new child to the parent, replacing either its left or right child,
|
||||
* depending on the key values.
|
||||
*/
|
||||
void vieter_tree_node_add_child(vieter_tree_node *parent, uint64_t key,
|
||||
vieter_tree_node *child);
|
||||
|
||||
/*
|
||||
* Replace a node's children array.
|
||||
*/
|
||||
void vieter_tree_node_set_children(vieter_tree_node *parent, vieter_tree_node **children);
|
||||
|
||||
/*
|
||||
* Set a node's left or right child to the given node.
|
||||
*/
|
||||
void vieter_tree_node_set_child(vieter_tree_node *parent, vieter_tree_node *child, bool right);
|
||||
|
||||
bool vieter_tree_node_validate(vieter_tree_node *node, uint64_t passed_black_nodes, uint64_t expected_black_nodes);
|
||||
|
||||
#endif
|
||||
|
|
|
@ -65,7 +65,7 @@ void test_rotate_left() {
|
|||
}
|
||||
|
||||
TEST_LIST = {
|
||||
{"tree tree rotate right", test_rotate_right},
|
||||
{"tree tree rotate left", test_rotate_left},
|
||||
{"tree rotate right", test_rotate_right},
|
||||
{"tree rotate left", test_rotate_left},
|
||||
{NULL, NULL}
|
||||
};
|
||||
|
|
Loading…
Reference in New Issue