1 #include <search.h> 2 #include "tsearch.h" 3 4 static 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 19 void twalk(const void *root, void (*action)(const void *, VISIT, int)) 20 { 21 walk(root, action, 0); 22 } 23