void avl_test_remove() { avlTree_t tree; int_t *rec; int_t i; rec = AR_NEWARR0(int_t, INSERT_CNT); avl_init(&tree); for(i = 0; i < INSERT_CNT; ++i) { int_t n = rand()%999999; avl_insert_equal(&tree, n); rec[i] = n; } avl_print_tree(&tree); if(!avl_verify_tree(&tree)) { AR_ASSERT(false); } for(i = 0; i < INSERT_CNT; ++i) { if(!avl_remove(&tree, rec[i])) { AR_ASSERT(false); } AR_printf(L"key == %d\r\n", rec[i]); avl_print_tree(&tree); AR_printf(L"\r\n"); if(!avl_verify_tree(&tree)) { AR_ASSERT(false); } /* avlNode_t *node = avl_find(&tree, rec[i]); AR_ASSERT(node && node->data == rec[i]); AR_printf(L"key == %d Node == %d\r\n", rec[i], node->data); */ getchar(); } avl_uninit(&tree); AR_DEL(rec); }
void avl_test_insert() { avlTree_t tree; avlNode_t *node; int_t i; avl_init(&tree); for(i = 0; i < 10240; ++i) { avl_insert_equal(&tree, rand()%999999); } avl_print_tree(&tree); if(!avl_verify_tree(&tree)) { AR_ASSERT(false); } node = tree.left_most; while(node) { AR_printf(L"%d\r\n", node->data); node = avl_get_successor(node); } AR_printf(L"\r\n"); avl_uninit(&tree); }
int main (int argc, char ** argv) { avl_tree * tree; unsigned int index; tree = avl_new_avl_tree (compare_ints, NULL); avl_insert_by_key (tree, (void *) 50, &index); avl_print_tree (tree, int_printer); avl_verify (tree); avl_insert_by_key (tree, (void *) 45, &index); avl_print_tree (tree, int_printer); avl_verify (tree); avl_insert_by_key (tree, (void *) 15, &index); avl_print_tree (tree, int_printer); avl_verify (tree); avl_insert_by_key (tree, (void *) 10, &index); avl_print_tree (tree, int_printer); avl_verify (tree); avl_insert_by_key (tree, (void *) 75, &index); avl_print_tree (tree, int_printer); avl_verify (tree); avl_insert_by_key (tree, (void *) 55, &index); avl_print_tree (tree, int_printer); avl_verify (tree); avl_insert_by_key (tree, (void *) 70, &index); avl_print_tree (tree, int_printer); avl_verify (tree); avl_insert_by_key (tree, (void *) 80, &index); avl_print_tree (tree, int_printer); avl_verify (tree); avl_insert_by_key (tree, (void *) 60, &index); avl_print_tree (tree, int_printer); avl_verify (tree); avl_insert_by_key (tree, (void *) 32, &index); avl_print_tree (tree, int_printer); avl_verify (tree); avl_insert_by_key (tree, (void *) 20, &index); avl_print_tree (tree, int_printer); avl_verify (tree); avl_insert_by_key (tree, (void *) 40, &index); avl_print_tree (tree, int_printer); avl_verify (tree); avl_insert_by_key (tree, (void *) 25, &index); avl_print_tree (tree, int_printer); avl_verify (tree); avl_insert_by_key (tree, (void *) 22, &index); avl_print_tree (tree, int_printer); avl_verify (tree); avl_insert_by_key (tree, (void *) 31, &index); avl_print_tree (tree, int_printer); avl_verify (tree); avl_insert_by_key (tree, (void *) 30, &index); avl_print_tree (tree, int_printer); avl_verify (tree); while (tree->length) { int num = 0; int any = 0; any = fscanf (stdin, "%d", &num); if (any < 1) { return 0; } else { fprintf (stdout, "deleting %d\n", num); avl_remove_by_key (tree, (void *) num, null_key_free); avl_print_tree (tree, int_printer); avl_verify (tree); } } return 0; }