Ejemplo n.º 1
0
/*! Recursively destroy the entire sub-tree */
void rbnode_destroy
    (
    rbnode_t * node
    )
    {
    if (!node)
        return;

    rbnode_destroy(node->right);

    rbnode_destroy(node->left);

    kfree(node);
    }
Ejemplo n.º 2
0
/*!
 * Clean a red-black tree [takes O(n) operations]
 *
 * Remove all objects from a black-red tree
 *
 * \param tree The tree
 */
void rbtree_clean
    (
    rbtree_t * tree
    )
    {
    if (tree->root)
        rbnode_destroy(tree->root);

    tree->root = NULL;
    tree->size = 0;
    }
Ejemplo n.º 3
0
void rbnode_destroy_with_children(rbnode* node)
{
  if (node->right) rbnode_destroy_with_children(node->right);
  if (node->left) rbnode_destroy_with_children(node->left);
  rbnode_destroy(node);
}