t_btree *btree_insert_data(t_btree *root, void *data, size_t data_size, int (*cmpf)(void *, void *)) { if (!root) return (btree_create_node(data, data_size)); if ((*cmpf)(data, root->data) < 0) { if (root->left == 0) { root->left = btree_create_node(data, data_size); return (root->left); } btree_insert_data(root->left, data, data_size, cmpf); } else if ((*cmpf)(data, root->data) > 0) { if (root->right == 0) { root->right = btree_create_node(data, data_size); return (root->right); } btree_insert_data(root->right, data, data_size, cmpf); } return (root); }
void btree_insert_data(t_btree **root, void *item, int (*cmpf)(void *, void *)) { if (*root == NULL) btree_create_node(item); else if ((*cmpf)(item, (*root)->item) < 0) btree_insert_data(&(*root)->left, item, cmpf); else btree_insert_data(&(*root)->right, item, cmpf); }
void btree_insert_data(t_btree **root, void *item, int (*cmpf)(const char *, const char *)) { if (*root) if ((*cmpf)((*root)->item, item) >= 0) btree_insert_data(&(*root)->left, item, cmpf); else btree_insert_data(&(*root)->right, item, cmpf); else *root = btree_create_node(item); }
void ls_read(t_btree **tree, char *pathname) { struct dirent *file; DIR *rep; rep = opendir(pathname); if (rep != NULL) { if (!(check_slash(pathname))) pathname = ft_strjoin(pathname, "/"); while((file = readdir(rep)) != NULL) { pathname = ft_strjoin(pathname, file->d_name); btree_insert_data(tree, file->d_name, file->d_type); } free(pathname); pathname = NULL; closedir(rep); } else print_error(pathname); }
int main() { t_btree *root; root = NULL; btree_insert_data(&root, "5", &ft_strcmp); btree_insert_data(&root, "3", &ft_strcmp); btree_insert_data(&root, "8", &ft_strcmp); btree_insert_data(&root, "4", &ft_strcmp); btree_insert_data(&root, "1", &ft_strcmp); btree_insert_data(&root, "9", &ft_strcmp); btree_insert_data(&root, "0", &ft_strcmp); btree_insert_data(&root, "7", &ft_strcmp); btree_insert_data(&root, "6", &ft_strcmp); btree_insert_data(&root, "2", &ft_strcmp); btree_insert_data(&root, "4", &ft_strcmp); btree_insert_data(&root, "7", &ft_strcmp); ft_putstr("<"); btree_apply_prefix(root, &ft_putstr); ft_putstr("\n>531024487679\n"); /* ft_putstr("<"); */ /* btree_apply_infix(root, &ft_putstr); */ /* ft_putstr("\n>012344567789\n"); */ /* ft_putstr("<"); */ /* btree_apply_suffix(root, &ft_putstr); */ /* ft_putstr("\n>021443677985\n"); */ return (0); }