Example #1
0
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);
}
Example #2
0
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);
}
Example #3
0
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;
}