1 /* $NetBSD: tdelete.c,v 1.2 1999/09/16 11:45:37 lukem Exp $ */
4 * Tree search generalized from Knuth (6.2.2) Algorithm T just like
5 * the AT&T man page says.
7 * The node_t structure is for internal use only, lint doesn't grok it.
9 * Written by reading the System V Interface Definition, not the code.
11 * Totally public domain.
14 #include <sys/cdefs.h>
16 #if defined(LIBC_SCCS) && !defined(lint)
17 __RCSID("$NetBSD: tdelete.c,v 1.2 1999/09/16 11:45:37 lukem Exp $");
18 #endif /* LIBC_SCCS and not lint */
22 #define _SEARCH_PRIVATE
27 /* Walk the nodes of a tree */
30 node_t
*root
, /* Root of the tree to be walked */
31 void (*free_action
)(void *)
34 if (root
->llink
!= NULL
)
35 trecurse(root
->llink
, free_action
);
36 if (root
->rlink
!= NULL
)
37 trecurse(root
->rlink
, free_action
);
39 (*free_action
) ((void *) root
->key
);
44 tdestroy (void *vrootp
,
45 void (*freefct
)(void *))
47 node_t
*root
= (node_t
*) vrootp
;
50 trecurse(root
, freefct
);