Code:void print_tree(void *tree, void(*print_fct)(char *key, void *value)){ BNODE *current = tree; if(current == NULL || print_fct == NULL){ return; }else{ print_tree(current->left, print_fct); /* I assume you really wanted this: */ print_fct(current->key, current->value); print_tree(current->right, print_fct); } }