AVL_ADD(3AVL) | AVL Tree Library Functions | AVL_ADD(3AVL) |

`avl_add`

,
`avl_remove`

— add and remove
nodes from an AVL tree

AVL Tree Library (libavl, -lavl)

`#include <sys/avl.h>`

`void`

`avl_add`

(`avl_tree_t *tree`,
`void *node`);

`void`

`avl_remove`

(`avl_tree_t *tree`,
`void *node`);

The
`avl_add`

()
and `avl_remove`

() functions add and remove objects
from the AVL tree rooted at `tree`.

The
`avl_add`

()
function inserts `node` into the tree.
`node` must not already be in the tree, thus implying it
must not compare equal to any other node in the tree. Adding
`node` to `tree` will take
**O(log(n))** time, as it implicitly determines where to place
it in the tree. If `node`'s location has already been
determined by avl_find(3AVL),
then instead use
avl_insert(3AVL).

The
`avl_remove`

()
function removes `node` from the tree rooted at
`tree`. `node` must be present in
the tree, otherwise, the behavior is undefined. Deleting
`node` from `tree` occurs in
**O(log(n))** time.

See the **EXAMPLES** section in
libavl(3LIB).

See Locking in libavl(3LIB).

avl_create(3AVL), avl_destroy(3AVL), avl_insert(3AVL), avl_insert_here(3AVL), libavl(3LIB)

April 13, 2015 | OmniOS |