xref: /aosp_15_r20/external/musl/src/search/twalk.c (revision c9945492fdd68bbe62686c5b452b4dc1be3f8453)
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