AVL_INSERT(3AVL) AVL Tree Library Functions AVL_INSERT(3AVL)

avl_insert, avl_insert_hereinsert items into an AVL tree

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

void
avl_insert(avl_tree_t *tree, void *new, avl_index_t where);

void
avl_insert_here(avl_tree_t *tree, void *new, void *here, int direction);

The () and avl_insert_here() functions are used to add the entry new to the tree rooted at tree.

The () function uses the where value, obtained from a call to avl_find(3AVL), to determine where to insert the new entry into the tree. The tree must not have been modified in between the call to avl_find(3AVL) and the call to avl_insert(). If callers are not using avl_find(3AVL) to validate the presence of new in the tree and only immediately insert it, then avl_add(3AVL) may be used instead.

The () function is for consumers who are keeping track of recently accessed data and wish to avoid an additional call to avl_find(3AVL). The new entry, new, will be inserted starting at the node here, which must already exist in the tree. To insert the node in the tree before here, then the argument direction should have the value AVL_BEFORE. Otherwise, to indicate that the new entry should be inserted after here, then direction should be set to AVL_AFTER. It is illegal to set direction to anything other than AVL_BEFORE or AVL_AFTER. If this is done, the behavior is not defined.

See the EXAMPLES section in libavl(3LIB).

See Locking in libavl(3LIB).

avl_add(3AVL), avl_find(3AVL), libavl(3LIB)

May 7, 2015 OmniOS