diff --git a/include/avltree.h b/include/avltree.h index c248241..c50c700 100644 --- a/include/avltree.h +++ b/include/avltree.h @@ -38,4 +38,12 @@ struct avltree_t *avl_remove(struct avltree_t *tree, int key); * @param key * @return void* */ -void *avl_get(struct avltree_t *tree, int key); \ No newline at end of file +void *avl_get(struct avltree_t *tree, int key); + +/** + * @brief Removes every node present on the given tree. + * + * @param tree + * @return NULL + */ +void *avl_clear(struct avltree_t *tree); \ No newline at end of file diff --git a/src/avltree.c b/src/avltree.c index a8268e4..393e651 100644 --- a/src/avltree.c +++ b/src/avltree.c @@ -198,4 +198,13 @@ void *avl_get(struct avltree_t *tree, int key) } } return NULL; +} + +void *avl_clear(struct avltree_t *tree) +{ + while(tree != NULL) + { + tree = avl_remove(tree, tree->key); + } + return tree; } \ No newline at end of file