if(next) next[(v>>31)^1]= t->elem;
return av_tree_find(t->child[v>>31], key, cmp, next);
}else{
+ if(next){
+ av_tree_find(t->child[0], key, cmp, next);
+ av_tree_find(t->child[1], key, cmp, next);
+ }
return t->elem;
}
}
#if 0
void av_tree_enumerate(AVTreeNode *t, void *opaque, int (*f)(void *opaque, void *elem)){
- f(opaque, t->elem);
- av_tree_enumerate(t->child[0], opaque, f);
- av_tree_enumerate(t->child[1], opaque, f);
+ int v= f(opaque, t->elem);
+ if(v>=0) av_tree_enumerate(t->child[0], opaque, f);
+ if(v<=0) av_tree_enumerate(t->child[1], opaque, f);
}
#endif
return a-b;
}
-int main(){
+int main(void){
int i,j,k;
- AVTreeNode *root= av_mallocz(sizeof(AVTreeNode));
+ AVTreeNode *root= NULL;
for(i=0; i<10000; i++){
int j= (random()%863294);