示例#1
0
文件: test.c 项目: kcoewoys/work
int main(void)
{
	btree_pnode t;

	create_btree(&t);

	travel("先序遍历序列为:",pre_order,t);
	travel("先序非递归遍历序列为:",pre_order_un,t);
	travel("中序遍历序列为:",mid_order,t);
	travel("后序遍历序列为:",post_order,t);
	travel("按层遍历序列为:",level_order,t);
	return 0;
}
示例#2
0
int main()
{
	btree_node *bt = NULL;
	char b[50] = "a(b(c),d(e(f,g),h(,i)))";
	//char b[50] = "a";
	int depth = 0;

	printf("%s\n",b);

	init_btree(&bt);
	create_btree(&bt, b);

	print_btree(bt);
	printf("\n");
	
	depth = depth_btree(bt);
	printf("btree depth:%d\n", depth);
	
	return 0;
}
示例#3
0
文件: test.c 项目: xilon-jul/blazeX
void test_binary_tree_free(){
	BinaryTree t = create_btree();
	char node[3][16] = {{0},{0},{0}};
	int j = 0;
	void f(BinaryTreeNode *n){
		if(*n == NULL){
			return;
		}
		strcpy(node[j++], (*n)->data);
	}
	binary_tree_node_free(&(t->root->left));
	assert( t->root->left == NULL );

	binary_tree_iterate_post_order(&(t->root), f);
	assert( strcmp(node[0], "c") == 0 );
	assert( strcmp(node[1], "a") == 0 );
	assert( node[2][0] == '\0' );

	binary_tree_free(&t);
	assert(t == NULL);
}
示例#4
0
文件: test.c 项目: xilon-jul/blazeX
void test_binary_tree_traversal(){
	BinaryTree t = create_btree();
	char node[3][16];
	int j = 0;
	void f(BinaryTreeNode *n){
		if(*n == NULL){
			return;
		}
		strcpy(node[j++], (*n)->data);
	}
	binary_tree_iterate_post_order(&(t->root), f);
	assert( strcmp(node[0], "b") == 0 );
	assert( strcmp(node[1], "c") == 0 );
	assert( strcmp(node[2], "a") == 0 );

	j = 0;
	binary_tree_iterate_pre_order(&(t->root), f);
	assert( strcmp(node[0], "a") == 0 );
	assert( strcmp(node[1], "b") == 0 );
	assert( strcmp(node[2], "c") == 0 );
}
示例#5
0
int main(int argc, char ** argv)
{
    int i;
    
    // do we have verbose output?
    bool ga_testing = false;
    
    if (argc > 1)
    {
        for (i = 1; i < argc; ++i)
        {
            if (!strcmp(argv[1],"-ga"))
            {
                ga_testing = true;
                break;
            }
        }
    }
    
    // initialize
    btree * tree = create_btree(16);
    
    bool flags[MAX_KEY];
    
    for (i = 0; i < MAX_KEY; ++i)
        flags[i] = false;
    
    // get starting time    
    struct timespec start, stop;
    clock_gettime(CLOCK_REALTIME,&start);

    // what we're timing
    for (int n = 0; n < TEST_SIZE; ++n)
    {
        // pick a key
        btree_key_t key = random_key(MAX_KEY);
        
        // is the key in the tree?
        btree_data_t data = btree_find(tree,key);
        
        if (data == NULL_DATA)
        {
            btree_insert(tree,key,(btree_data_t)key);
            flags[key] = true;
        }
        else
        {
            btree_remove(tree,key);
            flags[key] = false;
        }
    }
    
    // calculate run time
    clock_gettime(CLOCK_REALTIME,&stop);        
    double run_time = (stop.tv_sec - start.tv_sec) + (double)(stop.tv_nsec - start.tv_nsec) / 1000000000.0;
    
#if defined(VERIFY)
    // verify
    for (btree_key_t k = 0; k < MAX_KEY; ++k)
    {
        if (NULL_DATA == btree_find(tree,k))
        {
            if (flags[k])
                fprintf(stderr,"VERIFICATION ERROR: %l found, and shouldn't have been\n",k);
        }
        else
        {
            if (!flags[k])
                fprintf(stderr,"VERIFICATION ERROR: %l not found, and should have been\n",k);
        }
    }
#endif
    
    // clean up
    free_btree(tree);

    // report runtime
    if (ga_testing)
        fprintf(stdout,"%f",run_time);
    else        
        fprintf(stdout,"\ntreebench (Std. C) run time: %f\n\n",run_time);
    
    fflush(stdout);
    
    // done
    return 0;
}