libvieter/src/tree/vieter_tree_balancing.h

22 lines
589 B
C

#ifndef VIETER_TREE_BALANCING
#define VIETER_TREE_BALANCING
#include "vieter_tree_node.h"
/*
* Ensure the tree remains a valid red-black tree after having inserting the
* node.
*/
void vieter_tree_node_balance_after_insert(vieter_tree_node *node);
/*
* Remove the given node, ensuring the tree remains a valid red-black tree.
*
* @param node node to remove. This should have at most a single child, namely
* the right one.
*/
void vieter_tree_node_remove_balanced(vieter_tree_node *node);
vieter_tree_node *vieter_tree_node_rotate(vieter_tree_node *old_root, bool dir);
#endif