| #define _GNU_SOURCE | |
| #include <stdlib.h> | |
| #include <search.h> | |
| struct node { | |
| void *key; | |
| struct node *left; | |
| struct node *right; | |
| }; | |
| void tdestroy(void *root, void (*freekey)(void *)) | |
| { | |
| struct node *r = root; | |
| if (r == 0) | |
| return; | |
| tdestroy(r->left, freekey); | |
| tdestroy(r->right, freekey); | |
| if (freekey) freekey(r->key); | |
| free(r); | |
| } |