AVL_FIND(3AVL) AVL Tree Library Functions AVL_FIND(3AVL)

NAME


avl_find - find a node in an AVL tree

SYNOPSIS


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

void *
avl_find(avl_tree_t *tree, const void *node, avl_index_t *where);

DESCRIPTION


The avl_find() function is used to look up a node in the tree rooted at
tree.

To perform a lookup, a caller should construct an instance of the data
structure, the argument node. avl_find() searches through the tree for a
node which compares equal to the passed in node using the comparison
function specified when the tree was created with avl_create(3AVL). The
only fields of node that need to be initialized are those that the
comparison function will use, the others may remain uninitialized.

If a match exists in the tree, then that entry will be returned.
Otherwise, NULL is returned.

If node does not match anything in the tree and the value of where is a
non-NULL pointer, then where will be updated to a value that can be used
with both avl_insert(3AVL) and avl_nearest(3AVL). This value is only valid
as long as the tree is not modified. If anything is added or removed from
the tree, then the value of where is no longer valid. This is commonly
used as part of a pattern to see if something that should be added to the
tree already exists, and if not, insert it. For more information, see the
examples in libavl(3LIB).

If the lookup is successful, then the contents of where are undefined.

RETURN VALUES


If node matches an entry in the tree, the matching entry is returned.
Otherwise, NULL is returned and if where is non-NULL, it is updated to
point to a location in the tree.

EXAMPLES


See the EXAMPLES section in libavl(3LIB).

INTERFACE STABILITY


Committed

MT-Level
See Locking in libavl(3LIB).

SEE ALSO


avl_create(3AVL), avl_insert(3AVL), avl_nearest(3AVL), libavl(3LIB)

illumos May 7, 2015 illumos