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