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);
    }

}