diff options
Diffstat (limited to 'c13/ex05/btree_search_item.c')
| -rw-r--r-- | c13/ex05/btree_search_item.c | 20 |
1 files changed, 18 insertions, 2 deletions
diff --git a/c13/ex05/btree_search_item.c b/c13/ex05/btree_search_item.c index b5d7114..a714e0c 100644 --- a/c13/ex05/btree_search_item.c +++ b/c13/ex05/btree_search_item.c @@ -6,11 +6,27 @@ /* By: cacharle <charles.cabergs@gmail.com> +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2019/07/23 20:49:54 by cacharle #+# #+# */ -/* Updated: 2019/07/23 21:09:10 by cacharle ### ########.fr */ +/* Updated: 2019/07/24 14:15:46 by cacharle ### ########.fr */ /* */ /* ************************************************************************** */ -void *btree_search_item(t_btree *root, void *data_ref, int (*cmpf)(void *, void *)) +#include <stdlib.h> +#include "ft_btree.h" + +void *btree_search_item(t_btree *root, void *data_ref, + int (*cmpf)(void *, void *)) { + void *tmp; + if (root == NULL) + return (NULL); + tmp = btree_search_item(root->left, data_ref, cmpf); + if (tmp != NULL) + return (tmp); + if ((*cmpf)(root->item, data_ref) == 0) + return (root->item); + tmp = btree_search_item(root->right, data_ref, cmpf); + if (tmp != NULL) + return (tmp); + return (NULL); } |
