Пример #1
0
void *btree_destroy(tnode *t)
{
  if(t == NULL){
  }else{
    btree_destroy(t->left);
    btree_destroy(t->right);
    free(t->key);
    free(t->value);
    free(t);
  }
  return;
}
Пример #2
0
void btree_test() {
	struct btree *node1 = btree_create(NULL, TYPE_INT, 1);
	struct btree *node2 = btree_create(NULL, TYPE_INT, 2);
	struct btree *node3 = btree_create(NULL, TYPE_INT, 3);
	struct btree *node4 = btree_create(NULL, TYPE_INT, 4);
	struct btree *node5 = btree_create(NULL, TYPE_INT, 5);
	struct btree *node6 = btree_create(NULL, TYPE_INT, 6);
	struct btree *node7 = btree_create(NULL, TYPE_INT, 7);
	struct btree *node8 = btree_create(NULL, TYPE_INT, 8);
	node1->left = node2;
	node1->right = node3;
	node2->left = node4;
	node2->right = node5;
	node3->left = node6;
	node3->right = node7;
	node4->left = node8;

	fprintf(stdout, "preorder:\n");
	btree_preorder(node1);

	fprintf(stdout, "postorder:\n");
	btree_postorder(node1);

	fprintf(stdout, "inorder:\n");
	btree_inorder(node1);
	
	fprintf(stdout, "btree_search(node5, node8) = %d\n", btree_search(node5, node8));	
	fprintf(stdout, "btree_search(node4, node8) = %d\n", btree_search(node4, node8));	

	btree_destroy(node1);
}
Пример #3
0
char *test_close()
{
	btree_destroy(s, root);
	store_close(s);

	return NULL;
}
Пример #4
0
void bstree_destroy(struct bstree_node *node)
{
	if (node != NULL)
	{
		btree_destroy(node->root);
		free(node);
	}
}
Пример #5
0
extern void btree_destroy(p_btree_t tree)
{
#if TREE_ARG_CHECK == 1
	if (NULL == tree)
	{
		errno = EINVAL;
		return;
	}
#endif
	if (tree->lchild != NULL)
	{
		btree_destroy(tree->lchild);
	}
	if (tree->rchild != NULL)
	{
		btree_destroy(tree->rchild);
	}	
}
Пример #6
0
void
free_bmaps(xfs_mount_t *mp)
{
	xfs_agnumber_t i;

	for (i = 0; i < mp->m_sb.sb_agcount; i++)
		btree_destroy(ag_bmap[i]);
	free(ag_bmap);
	ag_bmap = NULL;

	free_rt_bmap(mp);
}
Пример #7
0
TEST(BTree, Insert)
{
	struct btree_s tree;
	btree_init(&tree, 3);
	int i;

	for (i = 0; i < 10; i++) {
		btree_insert(&tree, i);
	}

	btree_dump(&tree);

	btree_destroy(&tree);
}
Пример #8
0
void test_btree()
{
//	int array[10] = {10,11,12,9,6,5,4,3,2,1};
	int array[10] = {10,9,8,7,6,5,4,3,2,1};
	btnode_t* root;

  	root = btree_init(array, 10);
	if (root == NULL) {
		printf("btree init fail\n");
	}	
	printf("start preorer...\n");
	btree_preorder(root);
	printf("\nstart destroy btree..\n");
	btree_destroy(root);
}
Пример #9
0
int
main()
{
    btree_t *b;
    uint32_t i, *x;
    uint32_t v[] = {15, 5, 16, 3, 12, 20, 10, 13, 18, 23, 6, 7};
    uint32_t nv = sizeof(v) / sizeof(v[0]);

    btree_create(&b);

    for(i = 0; i < nv; i++) {
        x = (uint32_t*)xmalloc(sizeof(uint32_t));
        *x = (uint32_t)random();
        if (btree_add(b, v[i], (void*)x) != TRUE) {
            printf("Fail Add %lu %lu\n", v[i], *x);
        }
    }

    printf("depth %d\n", btree_depth(b->root));
    btree_dump(b);

    sleep(3);
    btree_remove(b, 5, (void*)&x);
    btree_dump(b);
    sleep(3);
    btree_remove(b, 16, (void*)&x);
    btree_dump(b);
    sleep(3);
    btree_remove(b, 13, (void*)&x);
    btree_dump(b);

    while (btree_get_root_key(b, &i)) {
        if (btree_remove(b, i, (void*)&x) == FALSE) {
            fprintf(stderr, "Failed to remove %lu\n", i);
        }
        btree_dump(b);
        sleep(1);
    }

    if (btree_destroy(&b) == FALSE) {
        printf("Failed to destroy \n");
    }

    return 0;
}
Пример #10
0
TEST(BTree, RemoveALot)
{
	struct btree_s tree;
	btree_init(&tree, 3);
	int i;

	for (i = 0; i < 1000000; i++) {
		btree_insert(&tree, i);
	}

	for (i = 10; i < 999992; i++) {
		btree_remove(&tree, i);
	}

	btree_dump(&tree);

	btree_destroy(&tree);
}
Пример #11
0
int main(){
  char command[100];
  char word[100];
  char tango[100];
  tnode *tree = NULL;
  tnode *temp = NULL;

  while(1){
    scanf("%s", command);
    if(strcmp(command, "insert") == 0){
      scanf("%s %s", word, tango);
      temp = btree_insert(word, tango, tree);
      if(tree == NULL){
	tree = temp;
      }
    }else if(strcmp(command, "delete") == 0){
      scanf("%s", word);
      temp = btree_delete(word, tree);
      if(temp == tree->left){
	tree = tree->left;
      }else if(temp == tree->right){
	tree = tree->right;
      }
      
	
    }else if(strcmp(command, "search") == 0){
      scanf("%s", word);
      temp = btree_search(word, tree);
      if(temp == NULL){
	printf("(not found)\n");
      }else{
	printf("%s\n", temp->value);
      }
    }else if(strcmp(command, "quit") == 0){
      break;
    }else{
      printf("ERROR\n");
    }
  }

  btree_destroy(tree);
  return 0;
}
Пример #12
0
TEST(BTree, RemoveALot1)
{
	struct btree_s tree;
	btree_init(&tree, 3);
	int i;

	srand(time(0));

	for (i = 0; i < 100000; i++) {
		btree_insert(&tree, i);
	}

	btree_check(tree.root);

	for (i = 0; i < 99992; i += (rand() % 3 + 1) ) {
		btree_remove(&tree, i);
	}

	btree_destroy(&tree);
}
Пример #13
0
int main(int argc, char **argv)
{
  BTree *tree = btree_create(int_compare);
  int n = atoi(argv[1]);
  int a[n];
  //int a[] = {1, 3, 2, 5, -1, 19, 15, 45, 9, 6, -4};
  n = sizeof(a) / sizeof(a[0]);
  //n = 3;
  for (int i = 0; i < n; ++i) {
    //a[i] = i + 1;
    a[i] = rand() % 1000;
    btree_insert(tree, (void*)&a[i]);
  }
  for (int i = 0; i < n / 2; ++i) {
    btree_remove(btree_find(tree, &a[i]));
  }
  int expected_height = 2 * ceil(log(n + 1) / log(2)) + 1;
  btree_dump_dot(tree, node_attrs);
  btree_destroy(tree);
}
Пример #14
0
int
pdb_destroy(pdb_t **pp)
{
        pdb_t   *p = *pp;
        uint32_t id;

        while(pdb_get_first_id(p, &id)) {
                if (pdb_item_destroy(p, id) == FALSE) {
                        debug_msg("Failed to destroy item\n");
                        return FALSE;
                }
        }

        if (btree_destroy(&p->db) == FALSE) {
                debug_msg("Failed to destroy tree\n");
                return FALSE;
        }

        xfree(p);
        *pp = NULL;
        return TRUE;
}
Пример #15
0
TEST(BTree, Remove)
{
	struct btree_s tree;
	btree_init(&tree, 3);
	int i;

	for (i = 0; i < 10; i++) {
		btree_insert(&tree, i);
	}

	btree_dump(&tree);

	btree_remove(&tree, 5);
	btree_dump(&tree);

	btree_remove(&tree, 9);
	btree_dump(&tree);

	btree_remove(&tree, 8);
	btree_dump(&tree);

	btree_destroy(&tree);
}
Пример #16
0
int main_btree(int argc, char** argv)
{
    btree_t *btree_p = btree_init(string_destroy, NULL);

    printf("%u\n", btree_size(btree_p));

    char *word = malloc(strlen("hello") + 1);
    strcpy(word, "hello");

    btree_node_t *root_node_p = NULL;

    root_node_p = btree_ins_left(btree_p, NULL, word);

    printf("%u\n", btree_size(btree_p));

    char *word2 = malloc(strlen("there") + 1);
    strcpy(word, "there");

    btree_ins_right(btree_p, root_node_p, word2);

    btree_destroy(&btree_p);

    return (EXIT_SUCCESS);
}
Пример #17
0
TEST(BTREETEST, HandleNoneZeroInput)  {
	MEM_POOL_PTR pMemPool = mem_pool_init(M_1M); 
	BTREE_PTR pBtree = btree_init(pMemPool, "zbtree_index", "/tmp/", 3*MAX, HI_TYPE_LONGLONG);
//	BTREE_PTR pBtree = btree_init(pMemPool, "zbtree_index", "/tmp/", 3*MAX, HI_TYPE_LONG);
	BTREE_PTR pBtree2 = btree_init(pMemPool, "zbtree_index2", "/tmp/", 3*MAX, HI_TYPE_DOUBLE);

	init_profile(1000, pMemPool);
	/*
	struct timeval start, end, end2;               
	double interval; 
	gettimeofday(&start, NULL);

	srand((unsigned int)time(NULL)); 
	int res,i;
	uint64 num;
	//插入10万数据
	for ( i = 0; i < MAX; i += 1 )
	{
		num = rand()%MAX;
		res = btree_insert(pMemPool, pBtree, num, i);
		ASSERT_EQ(res, 0);
	}
	gettimeofday(&end, NULL);
	interval = 1000000*(end.tv_sec - start.tv_sec) + (end.tv_usec - start.tv_usec);
	printf("insert %d data, cost %.2f ms\n", MAX, interval /1000);

	//范围查询10万次
	BTREE_ENTRY_PTR pBtreeEntry;
	uint32 num2;
//	struct rowid_list *pRowidList;
	for ( i = 0; i < MAX; i += 1 )
	{
		num = rand()%MAX+100;
		pBtreeEntry = btree_search(pBtree, num, CT_LE);
//		num2 = rand()%MAX+100;
//		struct rowid_list * pRowidList = btree_range_query(pBtree, num, 0, num2, 0, pMemPool);
//		if(pRowidList!=NULL)
//		{
//			printf("%d:", i);
//			print_rowid_list(pRowidList);
//		}
		//		ASSERT_EQ((pBtreeEntry != NULL), 1);
	}
	gettimeofday(&end2, NULL);
	interval = 1000000*(end2.tv_sec - end.tv_sec) + (end2.tv_usec - end.tv_usec);
	printf("search %d data, cost %.2f ms\n", MAX, interval /1000);
	*/
	
	//插入3 7 7 9 11 2 4 5 6 8
	int res = btree_insert(pMemPool, pBtree, 3, 1);
	ASSERT_EQ(res, 0);
	res = btree_insert(pMemPool, pBtree, 7, 2);
	ASSERT_EQ(res, 0);
	res = btree_insert(pMemPool, pBtree, 7, 10);
	ASSERT_EQ(res, 0);
	res = btree_insert(pMemPool, pBtree, 9, 3);
	ASSERT_EQ(res, 0);
	res = btree_insert(pMemPool, pBtree, 11, 4);
	ASSERT_EQ(res, 0);
	res = btree_insert(pMemPool, pBtree, 2, 5);
	ASSERT_EQ(res, 0);
	res = btree_insert(pMemPool, pBtree, 4, 6);
	ASSERT_EQ(res, 0);
	res = btree_insert(pMemPool, pBtree, 5, 7);
	ASSERT_EQ(res, 0);
	res = btree_insert(pMemPool, pBtree, 6, 8);
	ASSERT_EQ(res, 0);
	res = btree_insert(pMemPool, pBtree, 8, 9);
	ASSERT_EQ(res, 0);

	//等值查找3 9 8
//	long long value = 3;
	BTREE_ENTRY_PTR pBtreeEntry = btree_search(pBtree, 3, CT_EQ);
	ASSERT_EQ((pBtreeEntry != NULL), 1);
	ASSERT_EQ(pBtreeEntry->key, 3);
	pBtreeEntry = btree_search(pBtree, 9, CT_EQ);
	ASSERT_EQ((pBtreeEntry != NULL), 1);
	ASSERT_EQ(pBtreeEntry->key, 9);
	pBtreeEntry = btree_search(pBtree, 1, CT_EQ);
	ASSERT_EQ((pBtreeEntry == NULL), 1);

	//查找<7 <6 
	pBtreeEntry = btree_search(pBtree, 7, CT_LT);
	ASSERT_EQ((pBtreeEntry != NULL), 1);
	ASSERT_EQ(pBtreeEntry->key, 6);
	pBtreeEntry = btree_search(pBtree, 6, CT_LT);
	ASSERT_EQ((pBtreeEntry != NULL), 1);
	ASSERT_EQ(pBtreeEntry->key, 5);

	//查找>7 >6 
	pBtreeEntry = btree_search(pBtree, 7, CT_GT);
	ASSERT_EQ((pBtreeEntry != NULL), 1);
	ASSERT_EQ(pBtreeEntry->key, 8);
	pBtreeEntry = btree_search(pBtree, 6, CT_GT);
	ASSERT_EQ((pBtreeEntry != NULL), 1);
	ASSERT_EQ(pBtreeEntry->key, 7);

	//测试btree next
	//BTREE_ENTRY_PTR pEntry = btree_search(pBtree, 2, 0);
	BTREE_ENTRY_PTR pEntry = btree_get_start_entry(pBtree);
	struct doc_row_unit *pUnit;
	while(pEntry != NULL)
	{
		std::cout << "key = " << pEntry->key << " docID: ";
		//输出doclist
		pUnit = doclist_next(pBtree->pDoclist, pEntry->doclist);
		while(pUnit != NULL)
		{
			std::cout << pUnit->doc_id << " ";
			pUnit = doclist_next(pBtree->pDoclist, pUnit->next);
		}
		pEntry = btree_next(pBtree, pEntry);
		std::cout << std::endl;
	}
	std::cout << std::endl;

	struct rowid_list * pRowidList = btree_range_query(pBtree, 0, 0, 10, 0, pMemPool);
	print_rowid_list(pRowidList);

	BTREE_KEY key;
	double value;
	//insert 3.1 11.11 111.111 1111.1 11111.1 11.11
	value =3.1;
	memcpy(&key, &value, 8);
	res = btree_insert(pMemPool, pBtree2, key, 1);
	ASSERT_EQ(res, 0);

	value =11.11;
	memcpy(&key, &value, 8);
	res = btree_insert(pMemPool, pBtree2, key, 2);
	ASSERT_EQ(res, 0);

	value =111.111;
	memcpy(&key, &value, 8);
	res = btree_insert(pMemPool, pBtree2, key, 3);
	ASSERT_EQ(res, 0);

	value =1111.1;
	memcpy(&key, &value, 8);
	res = btree_insert(pMemPool, pBtree2, key, 4);
	ASSERT_EQ(res, 0);

	value =11111.1;
	memcpy(&key, &value, 8);
	res = btree_insert(pMemPool, pBtree2, key, 5);
	ASSERT_EQ(res, 0);

	value =11.11;
	memcpy(&key, &value, 8);
	res = btree_insert(pMemPool, pBtree2, key, 6);
	ASSERT_EQ(res, 0);

	value =1111;
	memcpy(&key, &value, 8);
	pRowidList = btree_range_query(pBtree2, 0, 0, key, 0, pMemPool);
	print_rowid_list(pRowidList);

	pEntry = btree_get_start_entry(pBtree2);
	while(pEntry != NULL)
	{
		std::cout << "key = " << *(double*)&pEntry->key << " docID: ";
		//输出doclist
		pUnit = doclist_next(pBtree2->pDoclist, pEntry->doclist);
		while(pUnit != NULL)
		{
			std::cout << pUnit->doc_id << " ";
			pUnit = doclist_next(pBtree2->pDoclist, pUnit->next);
		}
		pEntry = btree_next(pBtree2, pEntry);
		std::cout << std::endl;
	}
	std::cout << std::endl;
	//测试dump
	//btree_dump(pBtree);
	btree_destroy(pBtree);
	btree_destroy(pBtree2);
}
Пример #18
0
int main_bstree(int argc, char** argv)
{
    bool ok = true;

    /* Load forums from file into list. */

    list_t *list_p = NULL;

    if (ok)
        ok = (list_p = list_init()) != NULL;

    if (ok)
    {
        printf("-> Loading forum.csv...\n");
        ok = load_file("forum" ".csv", list_p);
    }

    printf("Forums: %d\n", list_size(list_p));

    /* Timing variables. */

    double t1, t2, real_time;
    struct tms tb;
    double tickspersec = (double) sysconf(_SC_CLK_TCK);

    /* Lookup a specific forum in the list for some iterations. */

    t1 = (double) times(&tb);

    unsigned int iter1, m;

    iter1 = 4 * 0;

    for (m = 0; m < iter1; m++)
    {
        unsigned int i, size;

        char *forum_name = "Wall of Eric Wilby";

        size = list_size(list_p);

        for (i = 0; i < size; i++)
        {
            forum_t *forum_p = NULL;
            list_get(list_p, (void **) &forum_p, i);
            if (!strcmp(forum_get_title(forum_p), forum_name))
            {
                //                printf("%s\n", forum_get_title(forum_p));
                break;
            }
        }
    }

    t2 = (double) times(&tb);
    real_time = (double) (t2 - t1) / tickspersec;
    printf("Completed %u list lookups in %.3f sec\n", m, real_time);

    /* Load all forums in list to binary search tree. */

    btree_t *btree_p = btree_init(forum_dstr, forum_cmp);
    if (btree_p == NULL)
        return (EXIT_FAILURE);

    unsigned int i, size;

    size = list_size(list_p);

    for (i = 0; i < size; i++)
    {
        forum_t *f_p = NULL;
        list_get(list_p, (void **) &f_p, i);
        btree_ins(btree_p, f_p);
    }
    
    printf("Loaded %u forums.\n", btree_size(btree_p));

    /* Print forums in alphabetical order, exec print function with INORDER mode. */

    unsigned int limit = 1500;
    bool ret = btree_exec(btree_p, INORDER, forum_print, &limit);
    printf("%u\n", ret);

    /* Perform lookups in binary search tree */

    forum_t *forum_p = forum_init(0, "Wall of Eric Wilby", 0);

    t1 = (double) times(&tb);

    unsigned int n, iter2;

    iter2 = 667;

    for (n = 0; n < iter2; n++)
    {
        btree_node_t *btree_node_p = btree_find(btree_p, forum_p);
        if (btree_node_p != NULL)
        {
            forum_t *f_p = (forum_t *) btree_node_get_data(btree_node_p);
            forum_get_title(f_p);
            // printf("%s\n", forum_get_title(f_p));
        }
    }

    t2 = (double) times(&tb);
    real_time = (double) (t2 - t1) / tickspersec;
    printf("Completed %u bstree lookups in %.3f sec\n", n, real_time);

    /* Free all memory */

    forum_destroy(&forum_p);
    btree_destroy(&btree_p); // btree destroys forums, which are also on the list

    //    size = list_size(list_p);
    //
    //    for (i = 0; i < size; i++)
    //    {
    //        forum_t *f_p = NULL;
    //        list_get(list_p, (void **) &f_p, i);
    //        forum_destroy(&f_p);
    //    }

    list_destroy(&list_p);

    return (EXIT_SUCCESS);
}
Пример #19
0
int main(void)
{
	BTREE_HEAD(t);
	assert(btree_insert(&t, 177) == 0);
	assert(btree_insert(&t, 248) == 0);
	assert(btree_insert(&t, 124) == 0);
	assert(btree_insert(&t, 75) == 0);
	assert(btree_insert(&t, 133) == 0);
	assert(btree_insert(&t, 230) == 0);
	assert(btree_insert(&t, 129) == 0);
	assert(btree_insert(&t, 101) == 0);
	assert(btree_insert(&t, 140) == 0);
	assert(btree_insert(&t, 143) == 0);
	assert(btree_insert(&t, 246) == 0);
	assert(btree_insert(&t, 113) == 0);
	assert(btree_insert(&t, 167) == 0);
	assert(btree_insert(&t, 142) == 0);
	assert(btree_insert(&t, 72) == 0);
	assert(btree_insert(&t, 227) == 0);
	assert(btree_insert(&t, 235) == 0);
	assert(btree_insert(&t, 103) == 0);
	assert(btree_insert(&t, 103) == -1);
	assert(btree_insert(&t, 28) == 0);
	assert(btree_insert(&t, 113) == -1);
	assert(btree_insert(&t, 250) == 0);
	assert(btree_insert(&t, 44) == 0);
	assert(btree_insert(&t, 35) == 0);
	assert(btree_insert(&t, 130) == 0);
	assert(btree_insert(&t, 9) == 0);
	assert(btree_insert(&t, 196) == 0);
	assert(btree_insert(&t, 40) == 0);
	assert(btree_insert(&t, 125) == 0);
	assert(btree_insert(&t, 34) == 0);
	assert(btree_insert(&t, 245) == 0);
	assert(btree_insert(&t, 102) == 0);
	assert(btree_insert(&t, 245) == 0);
	assert(btree_insert(&t, 40) == 0);
	assert(btree_insert(&t, 216) == 0);
	assert(btree_insert(&t, 213) == 0);
	assert(btree_insert(&t, 57) == 0);
	assert(btree_insert(&t, 37) == 0);
	assert(btree_insert(&t, 245) == 0);
	assert(btree_insert(&t, 96) == 0);
	assert(btree_insert(&t, 7) == 0);
	assert(btree_insert(&t, 130) == 0);
	assert(btree_insert(&t, 78) == 0);
	assert(btree_insert(&t, 146) == 0);
	assert(btree_insert(&t, 247) == 0);
	assert(btree_insert(&t, 32) == 0);
	assert(btree_insert(&t, 251) == 0);
	assert(btree_insert(&t, 253) == 0);
	assert(btree_insert(&t, 113) == 0);
	assert(btree_insert(&t, 36) == 0);
	assert(btree_insert(&t, 62) == 0);
	assert(btree_insert(&t, 28) == 0);
	assert(btree_insert(&t, 31) == 0);
	assert(btree_insert(&t, 183) == 0);
	assert(btree_insert(&t, 53) == 0);
	assert(btree_insert(&t, 118) == 0);
	assert(btree_insert(&t, 80) == 0);
	assert(btree_insert(&t, 163) == 0);
	assert(btree_insert(&t, 243) == 0);
	assert(btree_insert(&t, 183) == 0);
	assert(btree_insert(&t, 141) == 0);
	assert(btree_insert(&t, 222) == 0);
	assert(btree_insert(&t, 49) == 0);
	assert(btree_insert(&t, 252) == 0);
	assert(btree_insert(&t, 221) == 0);
	assert(btree_insert(&t, 179) == 0);
	assert(btree_insert(&t, 245) == 0);
	assert(btree_insert(&t, 48) == 0);
	assert(btree_insert(&t, 251) == 0);
	assert(btree_insert(&t, 74) == 0);
	assert(btree_insert(&t, 228) == 0);
	assert(btree_insert(&t, 199) == 0);
	assert(btree_insert(&t, 9) == 0);
	assert(btree_insert(&t, 121) == 0);
	assert(btree_insert(&t, 17) == 0);
	assert(btree_insert(&t, 133) == 0);
	assert(btree_insert(&t, 255) == 0);
	assert(btree_insert(&t, 166) == 0);
	assert(btree_insert(&t, 169) == 0);
	assert(btree_insert(&t, 163) == 0);
	assert(btree_insert(&t, 225) == 0);
	assert(btree_insert(&t, 213) == 0);
	assert(btree_insert(&t, 39) == 0);
	assert(btree_insert(&t, 31) == 0);
	assert(btree_insert(&t, 37) == 0);
	assert(btree_insert(&t, 162) == 0);
	assert(btree_insert(&t, 7) == 0);
	assert(btree_insert(&t, 195) == 0);
	assert(btree_insert(&t, 199) == 0);
	assert(btree_insert(&t, 160) == 0);
	assert(btree_insert(&t, 164) == 0);
	assert(btree_insert(&t, 246) == 0);
	assert(btree_insert(&t, 224) == 0);
	assert(btree_insert(&t, 19) == 0);
	assert(btree_insert(&t, 171) == 0);
	assert(btree_insert(&t, 186) == 0);
	assert(btree_insert(&t, 81) == 0);
	assert(btree_insert(&t, 45) == 0);
	assert(btree_insert(&t, 197) == 0);
	assert(btree_insert(&t, 206) == 0);

	btree_destroy(&t);

	return 0;
}