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; }
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; }
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); }
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 ); }
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; }