1#include <search.h> 2#include "tsearch.h" 3 4static void walk(const struct node *r, void (*action)(const void *, VISIT, int), int d) 5{ 6 if (!r) 7 return; 8 if (r->h == 1) 9 action(r, leaf, d); 10 else { 11 action(r, preorder, d); 12 walk(r->a[0], action, d+1); 13 action(r, postorder, d); 14 walk(r->a[1], action, d+1); 15 action(r, endorder, d); 16 } 17} 18 19void twalk(const void *root, void (*action)(const void *, VISIT, int)) 20{ 21 walk(root, action, 0); 22} 23