avl_destroy_nodesefficiently remove nodes from an AVL tree

AVL Tree Library (libavl, -lavl)
#include <sys/avl.h>

void *
avl_destroy_nodes(avl_tree_t *tree, void **cookie);

The () function is used to efficiently remove nodes from the AVL tree rooted at tree.

After the () function is called on an AVL tree, the only valid functions that may be called on it are additional calls to avl_destroy_nodes() and finally ().

Before calling (), callers must first initialize a value of type void * to NULL and pass a pointer to it as the argument cookie. This is an opaque value that will be used to maintain where to next delete items from the tree. Callers should never modify it after initializing it. After each call to avl_destroy_nodes(), cookie will be updated and must be passed to subsequent calls to avl_destroy_nodes().

Each time () is called, it will return a pointer to an object that had previously been inserted into the tree, allowing a caller the opportunity to delete or clean it up. Once avl_destroy_nodes() returns a NULL pointer, then the tree is empty and the caller should proceed to call avl_destroy(3AVL).

The examples in libavl(3LIB) demonstrate the correct usage of this interface.

The avl_destroy_nodes() function will return a pointer to the object just removed from the tree rooted at tree and if tree is empty, it will return NULL.

See the EXAMPLES section in libavl(3LIB).

See Locking in libavl(3LIB).

avl_destroy(3AVL), libavl(3LIB)

December 3, 2015 OmniOS