Index: fusl/src/search/tdestroy.c |
diff --git a/fusl/src/search/tdestroy.c b/fusl/src/search/tdestroy.c |
new file mode 100644 |
index 0000000000000000000000000000000000000000..5f9e197dcd1ea57869a0aa74f3c57d010ec163c6 |
--- /dev/null |
+++ b/fusl/src/search/tdestroy.c |
@@ -0,0 +1,21 @@ |
+#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); |
+} |