AVL_FIND(3AVL) | AVL Tree Library Functions | AVL_FIND(3AVL) |
avl_find
— find a
node in an AVL tree
AVL Tree Library (libavl, -lavl)
#include <sys/avl.h>
void *
avl_find
(avl_tree_t *tree,
const void *node, avl_index_t
*where);
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.
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.
See the EXAMPLES section in libavl(3LIB).
See Locking in libavl(3LIB).
avl_create(3AVL), avl_insert(3AVL), avl_nearest(3AVL), libavl(3LIB)
May 7, 2015 | OmniOS |