Beispiel #1
0
Datei: rbt.c Projekt: lchish/cosc
void rbt_inorder(rbt r, void f(char *s,colour_t c))
{
  if(r == NULL){
    return;
  }else{
    rbt_inorder(r->left,f);
    f(r->key,r->colour);
    rbt_inorder(r->right,f);
  }
}
Beispiel #2
0
int main(){
    Rbt_tree_link a = rbt_create();
    Rbtlink it;
    srand(time(NULL));

    puts("Inserting...");
    for(i=0;i<N;i++) {
	num[i] = rand() % N;
	rbt_insert(a,num[i]);
    }
    
    printf("rbt_size: %d\n",rbt_size(a));

    printf("min value:%d   max value:%d\n",rbt_item(rbt_minimum(a)),rbt_item(rbt_maximum(a)));
    puts("Doing assert...");
    rbt_assert(a);
    puts("Traversing (inorder)...");
    rbt_inorder(a,func);

    for(i=0; i < N; i++)
	rbt_search(a, i);

    puts("Traversing (from max to min)...");
    it = rbt_maximum(a);
    for(i = rbt_size(a)-1; i >= 0; i--) {
	assert(n[i] == rbt_item(it));
	it = rbt_predecessor(it);
    }

    printf("rbt_size: %d\n",rbt_size(a));

    puts("Deleting all values...");
    int i = 0;
    for (i = 0; i < N; ++i) {
	printf("%d deleted\r", num[i]);
	rbt_delete(a, num[i]);
    }

    puts("\nDestroying rbt..");
    rbt_destroy(a);
    puts("OK!");
    return 0;
}
Beispiel #3
0
void rbt_inorder(rbt r, void f(char *s)) {
   if (NULL == r) return;
   rbt_inorder(r->left, f);
   f(r->key);
   rbt_inorder(r->right, f);
}