AVL_DESTROY_NODES(3AVL) AVL Tree Library Functions AVL_DESTROY_NODES(3AVL)
NAME
avl_destroy_nodes - efficiently remove nodes from an AVL tree
SYNOPSIS
AVL Tree Library (libavl, -lavl)
#include <sys/avl.h> void * avl_destroy_nodes(
avl_tree_t *tree,
void **cookie);
DESCRIPTION
The
avl_destroy_nodes() function is used to efficiently remove nodes
from the AVL tree rooted at
tree.
After the
avl_destroy_nodes() 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
avl_destroy().
Before calling
avl_destroy_nodes(), 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
avl_destroy_nodes() 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.
RETURN VALUES
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.
EXAMPLES
See the
EXAMPLES section in
libavl(3LIB).
INTERFACE STABILITY
CommittedMT-Level See
Locking in
libavl(3LIB).
SEE ALSO
avl_destroy(3AVL),
libavl(3LIB)illumos December 3, 2015 illumos