/*! 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); }
/*! * 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; }
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); }