github.com/afumu/libc@v0.0.6/musl/src/search/twalk.c (about)

     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  }