Пример #1
0
void test_avlAdd_twice(void){

  Node* x = &node30;

 int i;

  i = avlAdd(&x, &node20);

  i = avlAdd(&x, &node40);



  UnityAssertEqualNumber((_U_SINT)((30)), (_U_SINT)((x->data)), (((void *)0)), (_U_UINT)59, UNITY_DISPLAY_STYLE_INT);

  UnityAssertEqualNumber((_U_SINT)((0)), (_U_SINT)((x->balanceFactor)), (((void *)0)), (_U_UINT)60, UNITY_DISPLAY_STYLE_INT);

  UnityAssertEqualNumber((_U_SINT)((20)), (_U_SINT)((x->left->data)), (((void *)0)), (_U_UINT)61, UNITY_DISPLAY_STYLE_INT);

  UnityAssertEqualNumber((_U_SINT)((0)), (_U_SINT)((x->left->balanceFactor)), (((void *)0)), (_U_UINT)62, UNITY_DISPLAY_STYLE_INT);

  UnityAssertEqualNumber((_U_SINT)((40)), (_U_SINT)((x->right->data)), (((void *)0)), (_U_UINT)63, UNITY_DISPLAY_STYLE_INT);

  UnityAssertEqualNumber((_U_SINT)((0)), (_U_SINT)((x->right->balanceFactor)), (((void *)0)), (_U_UINT)64, UNITY_DISPLAY_STYLE_INT);

}
Пример #2
0
void test_avlRemove_remove_node10_in_tree(void){
    Node *root = &node30;
  int cState =  avlAdd(&root,&node10);
  cState =avlAdd(&root,&node60);
  TEST_ASSERT_EQUAL_NODE(&node30,&node10,&node60,0);
  int heightChange;
  Node *temp = avlRemove(&root,60,&heightChange);
  TEST_ASSERT_EQUAL_PTR(&node60,temp);
  TEST_ASSERT_EQUAL_NODE(&node30,&node10,NULL,-1);
}
Пример #3
0
void test_avlAdd_twice(void){
  Node* x = &node30;
	int i;
  i = avlAdd(&x, &node20);
  i = avlAdd(&x, &node40);
  
  TEST_ASSERT_EQUAL(30,x->data);
  TEST_ASSERT_EQUAL(0,x->balanceFactor);
  TEST_ASSERT_EQUAL(20,x->left->data);
  TEST_ASSERT_EQUAL(0,x->left->balanceFactor);
  TEST_ASSERT_EQUAL(40,x->right->data);
  TEST_ASSERT_EQUAL(0,x->right->balanceFactor);
}
Пример #4
0
void test_single_rotation_with_avlAdd(void){



  Node* node = malloc(sizeof(Node));



 node = (Node*)createNode(2, 30);

  node->right = (Node*)createNode(1,40);

  node->right->right = (Node*)createNode(0,50);



  int i = avlAdd(&node, ((void *)0));



  UnityAssertEqualNumber((_U_SINT)((0)), (_U_SINT)((node->balanceFactor)), (((void *)0)), (_U_UINT)124, UNITY_DISPLAY_STYLE_INT);

  UnityAssertEqualNumber((_U_SINT)((40)), (_U_SINT)((node->data)), (((void *)0)), (_U_UINT)125, UNITY_DISPLAY_STYLE_INT);

  UnityAssertEqualNumber((_U_SINT)((0)), (_U_SINT)((node->left->balanceFactor)), (((void *)0)), (_U_UINT)126, UNITY_DISPLAY_STYLE_INT);

  UnityAssertEqualNumber((_U_SINT)((30)), (_U_SINT)((node->left->data)), (((void *)0)), (_U_UINT)127, UNITY_DISPLAY_STYLE_INT);

  UnityAssertEqualNumber((_U_SINT)((0)), (_U_SINT)((node->right->balanceFactor)), (((void *)0)), (_U_UINT)128, UNITY_DISPLAY_STYLE_INT);

  UnityAssertEqualNumber((_U_SINT)((50)), (_U_SINT)((node->right->data)), (((void *)0)), (_U_UINT)129, UNITY_DISPLAY_STYLE_INT);

}
Пример #5
0
void test_avlAdd_node_to_tree_with_1_branch(void){



  Node* node = malloc(sizeof(Node));



 node = (Node*)createNode(-1, 30);

  node->left = (Node*)createNode(0,20);



 int i;

  i = avlAdd(&node, &node40);



  UnityAssertEqualNumber((_U_SINT)((0)), (_U_SINT)((node->balanceFactor)), (((void *)0)), (_U_UINT)106, UNITY_DISPLAY_STYLE_INT);

  UnityAssertEqualNumber((_U_SINT)((30)), (_U_SINT)((node->data)), (((void *)0)), (_U_UINT)107, UNITY_DISPLAY_STYLE_INT);

  UnityAssertEqualNumber((_U_SINT)((0)), (_U_SINT)((node->left->balanceFactor)), (((void *)0)), (_U_UINT)108, UNITY_DISPLAY_STYLE_INT);

  UnityAssertEqualNumber((_U_SINT)((20)), (_U_SINT)((node->left->data)), (((void *)0)), (_U_UINT)109, UNITY_DISPLAY_STYLE_INT);

  UnityAssertEqualNumber((_U_SINT)((0)), (_U_SINT)((node->right->balanceFactor)), (((void *)0)), (_U_UINT)110, UNITY_DISPLAY_STYLE_INT);

  UnityAssertEqualNumber((_U_SINT)((40)), (_U_SINT)((node->right->data)), (((void *)0)), (_U_UINT)111, UNITY_DISPLAY_STYLE_INT);

}
Пример #6
0
 /** 100(-1)60(0)  -> 100(-1)60(+1)                             
 *              100(-1)    -130         100(-2)                     60(+1)
 *             /   \      ------>       /          ----->          /  \
 *         (0)60  130              (0)60                         40   100(-1)
 *           / \                     / \                              /
 *         40  80                  40  80                           80
 *
 **/
void test_avlRemove_remove_node130_and_given_the_bal_factor_of_node60_is_0(void){
  Node *root = &node100;
  int cState =  avlAdd(&root,&node60);
  cState =avlAdd(&root,&node130);
  cState =avlAdd(&root,&node40);
  cState =avlAdd(&root,&node80);   
  
  int heightChange;
  Node *temp = avlRemove(&root,130,&heightChange);

  TEST_ASSERT_EQUAL(0,heightChange);
  TEST_ASSERT_EQUAL_PTR(&node130,temp);
  TEST_ASSERT_EQUAL_NODE(root,&node40,&node100,1);
  TEST_ASSERT_EQUAL_NODE(&node100,&node80,NULL,-1);
  TEST_ASSERT_EQUAL_NODE(&node80,NULL,NULL,0);
  TEST_ASSERT_EQUAL_NODE(&node40,NULL,NULL,0);
}
Пример #7
0
void test_create_a_large_tree_by_using_avlAdd(void){
  Node* tree = &node30;
  int i = avlAdd(&tree,&node20);
  i = avlAdd(&tree,&node50);
  i = avlAdd(&tree,&node10);
  i = avlAdd(&tree,&node40);
  i = avlAdd(&tree,&node80);
  i = avlAdd(&tree,&node60);
  i = avlAdd(&tree,&node100);
  
  TEST_ASSERT_EQUAL(30,tree->data);
  TEST_ASSERT_EQUAL(0,tree->balanceFactor);
  TEST_ASSERT_EQUAL(20,tree->left->data);
  TEST_ASSERT_EQUAL(-1,tree->left->balanceFactor);
  TEST_ASSERT_EQUAL(10,tree->left->left->data);
  TEST_ASSERT_EQUAL(0,tree->left->left->balanceFactor);
  TEST_ASSERT_EQUAL(50,tree->right->data);
  TEST_ASSERT_EQUAL(1,tree->right->balanceFactor);
  TEST_ASSERT_EQUAL(80,tree->right->right->data);
  TEST_ASSERT_EQUAL(0,tree->right->right->balanceFactor);
  TEST_ASSERT_EQUAL(40,tree->right->left->data);
  TEST_ASSERT_EQUAL(0,tree->right->left->balanceFactor);
  TEST_ASSERT_EQUAL(100,tree->right->right->right->data);
  TEST_ASSERT_EQUAL(0,tree->right->right->right->balanceFactor);
  TEST_ASSERT_EQUAL(60,tree->right->right->left->data);
  TEST_ASSERT_EQUAL(0,tree->right->right->left->balanceFactor);
  
  
}
Пример #8
0
 void test_avlRemove_remove_node80_and_The_BF_of_node60_is_(void){
  
  Node *root = &node100;
  int cState =  avlAdd(&root,&node60);
  cState =avlAdd(&root,&node130);
  cState =avlAdd(&root,&node140);
  cState =avlAdd(&root,&node110);   
  
  int heightChange;
  Node *temp = avlRemove(&root,110,&heightChange);
  TEST_ASSERT_EQUAL(0,heightChange);
  TEST_ASSERT_EQUAL_PTR(&node110,temp);
  
  TEST_ASSERT_EQUAL_NODE(root,&node60,&node130,1);
  TEST_ASSERT_EQUAL_NODE(&node60,NULL,NULL,0);
  TEST_ASSERT_EQUAL_NODE(&node130,NULL,&node140,1);
  
}
Пример #9
0
void test_avlAdd(void){
  Node* x = &node10;
	int i;
  i = avlAdd(&x, &node20);
  
  TEST_ASSERT_EQUAL(10,x->data);
  TEST_ASSERT_EQUAL(1,x->balanceFactor);
  TEST_ASSERT_EQUAL(20,x->right->data);
  TEST_ASSERT_EQUAL(0,x->right->balanceFactor);
}
Пример #10
0
void test_create_a_large_tree_by_using_avlAdd(void){

  Node* tree = &node30;

  int i = avlAdd(&tree,&node20);

  i = avlAdd(&tree,&node50);

  i = avlAdd(&tree,&node10);

  i = avlAdd(&tree,&node40);

  i = avlAdd(&tree,&node80);

  i = avlAdd(&tree,&node60);

  i = avlAdd(&tree,&node100);



  UnityAssertEqualNumber((_U_SINT)((30)), (_U_SINT)((tree->data)), (((void *)0)), (_U_UINT)77, UNITY_DISPLAY_STYLE_INT);

  UnityAssertEqualNumber((_U_SINT)((0)), (_U_SINT)((tree->balanceFactor)), (((void *)0)), (_U_UINT)78, UNITY_DISPLAY_STYLE_INT);

  UnityAssertEqualNumber((_U_SINT)((20)), (_U_SINT)((tree->left->data)), (((void *)0)), (_U_UINT)79, UNITY_DISPLAY_STYLE_INT);

  UnityAssertEqualNumber((_U_SINT)((-1)), (_U_SINT)((tree->left->balanceFactor)), (((void *)0)), (_U_UINT)80, UNITY_DISPLAY_STYLE_INT);

  UnityAssertEqualNumber((_U_SINT)((10)), (_U_SINT)((tree->left->left->data)), (((void *)0)), (_U_UINT)81, UNITY_DISPLAY_STYLE_INT);

  UnityAssertEqualNumber((_U_SINT)((0)), (_U_SINT)((tree->left->left->balanceFactor)), (((void *)0)), (_U_UINT)82, UNITY_DISPLAY_STYLE_INT);

  UnityAssertEqualNumber((_U_SINT)((50)), (_U_SINT)((tree->right->data)), (((void *)0)), (_U_UINT)83, UNITY_DISPLAY_STYLE_INT);

  UnityAssertEqualNumber((_U_SINT)((1)), (_U_SINT)((tree->right->balanceFactor)), (((void *)0)), (_U_UINT)84, UNITY_DISPLAY_STYLE_INT);

  UnityAssertEqualNumber((_U_SINT)((80)), (_U_SINT)((tree->right->right->data)), (((void *)0)), (_U_UINT)85, UNITY_DISPLAY_STYLE_INT);

  UnityAssertEqualNumber((_U_SINT)((0)), (_U_SINT)((tree->right->right->balanceFactor)), (((void *)0)), (_U_UINT)86, UNITY_DISPLAY_STYLE_INT);

  UnityAssertEqualNumber((_U_SINT)((40)), (_U_SINT)((tree->right->left->data)), (((void *)0)), (_U_UINT)87, UNITY_DISPLAY_STYLE_INT);

  UnityAssertEqualNumber((_U_SINT)((0)), (_U_SINT)((tree->right->left->balanceFactor)), (((void *)0)), (_U_UINT)88, UNITY_DISPLAY_STYLE_INT);

  UnityAssertEqualNumber((_U_SINT)((100)), (_U_SINT)((tree->right->right->right->data)), (((void *)0)), (_U_UINT)89, UNITY_DISPLAY_STYLE_INT);

  UnityAssertEqualNumber((_U_SINT)((0)), (_U_SINT)((tree->right->right->right->balanceFactor)), (((void *)0)), (_U_UINT)90, UNITY_DISPLAY_STYLE_INT);

  UnityAssertEqualNumber((_U_SINT)((60)), (_U_SINT)((tree->right->right->left->data)), (((void *)0)), (_U_UINT)91, UNITY_DISPLAY_STYLE_INT);

  UnityAssertEqualNumber((_U_SINT)((0)), (_U_SINT)((tree->right->right->left->balanceFactor)), (((void *)0)), (_U_UINT)92, UNITY_DISPLAY_STYLE_INT);





}
Пример #11
0
void test_add_a_node_and_double_rotation_the_tree_by_using_avlAdd_function(void){
  //declare variable.
  Node* node1 = malloc(sizeof(Node));
  //create a complicated tree.
	node1 = (Node*)createNode(2, 30);
  node1->left = (Node*)createNode(-1,20);
  node1->left->left = (Node*)createNode(0,10);
  node1->right = (Node*)createNode(-1,80);
  node1->right->left = (Node*)createNode(1,50);
  node1->right->right = (Node*)createNode(-1,100);
  
  //declare variable to prevent complicated term.
  Node* nodeBranch1 = node1->right->left;
  Node* nodeBranch2 = node1->right->right;
  
  //continue build the tree.
  nodeBranch1->left = (Node*)createNode(0,40);
  nodeBranch1->right = (Node*)createNode(1,60);
  nodeBranch1->right->right = (Node*)createNode(0,70);
  nodeBranch2->left = (Node*)createNode(0,90);
  int i;
  i = avlAdd(&node1, &node110);
  nodeBranch1 = node1->right->left;
  nodeBranch2 = node1->right->right;
  Node* nodeBranch3 = node1->left->left;
  
  //test the tree after rotation.  
  TEST_ASSERT_EQUAL(50,node1->data);
  TEST_ASSERT_EQUAL(0,node1->balanceFactor);
  TEST_ASSERT_EQUAL(30,node1->left->data);
  TEST_ASSERT_EQUAL(-1,node1->left->balanceFactor);
  TEST_ASSERT_EQUAL(20,node1->left->left->data);
  TEST_ASSERT_EQUAL(-1,node1->left->left->balanceFactor);
  TEST_ASSERT_EQUAL(40,node1->left->right->data);
  TEST_ASSERT_EQUAL(0,node1->left->right->balanceFactor);
  TEST_ASSERT_EQUAL(80,node1->right->data);
  TEST_ASSERT_EQUAL(0,node1->right->balanceFactor);
  TEST_ASSERT_EQUAL(60,nodeBranch1->data);
  TEST_ASSERT_EQUAL(1,nodeBranch1->balanceFactor);
  TEST_ASSERT_EQUAL(100,nodeBranch2->data);
  TEST_ASSERT_EQUAL(0,nodeBranch2->balanceFactor);
  TEST_ASSERT_EQUAL(70,nodeBranch1->right->data);
  TEST_ASSERT_EQUAL(0,nodeBranch1->right->balanceFactor);
  TEST_ASSERT_EQUAL(90,nodeBranch2->left->data);
  TEST_ASSERT_EQUAL(0,nodeBranch2->left->balanceFactor);
  TEST_ASSERT_EQUAL(10,nodeBranch3->left->data);
  TEST_ASSERT_EQUAL(0,nodeBranch3->left->balanceFactor);
  TEST_ASSERT_EQUAL(110,nodeBranch2->right->data);
  TEST_ASSERT_EQUAL(0,nodeBranch2->right->balanceFactor);
}
Пример #12
0
void test_avlAdd_node_to_tree_with_1_branch(void){
  //declare variable.
  Node* node = malloc(sizeof(Node));
  //create a complicated tree.
	node = (Node*)createNode(-1, 30);
  node->left = (Node*)createNode(0,20);
  //create a tree with 3 nodes.
	int i;
  i = avlAdd(&node, &node40);
  
  TEST_ASSERT_EQUAL(0,node->balanceFactor);
  TEST_ASSERT_EQUAL(30,node->data);
  TEST_ASSERT_EQUAL(0,node->left->balanceFactor);
  TEST_ASSERT_EQUAL(20,node->left->data);
  TEST_ASSERT_EQUAL(0,node->right->balanceFactor);
  TEST_ASSERT_EQUAL(40,node->right->data);
}
Пример #13
0
void test_single_rotation_with_avlAdd(void){
  //declare variable.
  Node* node = malloc(sizeof(Node));
  //create a complicated tree.
	node = (Node*)createNode(2, 30);
  node->right = (Node*)createNode(1,40);
  node->right->right = (Node*)createNode(0,50);
  
  int i = avlAdd(&node, NULL);
  
  TEST_ASSERT_EQUAL(0,node->balanceFactor);
  TEST_ASSERT_EQUAL(40,node->data);
  TEST_ASSERT_EQUAL(0,node->left->balanceFactor);
  TEST_ASSERT_EQUAL(30,node->left->data);
  TEST_ASSERT_EQUAL(0,node->right->balanceFactor);
  TEST_ASSERT_EQUAL(50,node->right->data);
}
Пример #14
0
void test_avlAdd(void){

  Node* x = &node10;

 int i;

  i = avlAdd(&x, &node20);



  UnityAssertEqualNumber((_U_SINT)((10)), (_U_SINT)((x->data)), (((void *)0)), (_U_UINT)48, UNITY_DISPLAY_STYLE_INT);

  UnityAssertEqualNumber((_U_SINT)((1)), (_U_SINT)((x->balanceFactor)), (((void *)0)), (_U_UINT)49, UNITY_DISPLAY_STYLE_INT);

  UnityAssertEqualNumber((_U_SINT)((20)), (_U_SINT)((x->right->data)), (((void *)0)), (_U_UINT)50, UNITY_DISPLAY_STYLE_INT);

  UnityAssertEqualNumber((_U_SINT)((0)), (_U_SINT)((x->right->balanceFactor)), (((void *)0)), (_U_UINT)51, UNITY_DISPLAY_STYLE_INT);

}
Пример #15
0
/** 30(+1)60(-1)40(0)  -> 30(0)60(0)50(0)                             
 *             30(+1)                30(+2)                   40(0)
 *             / \      ------>     /  \        ----->        /   \
 *           20  60(-1)           20   60(-1)            (0)30    60(0)
 *          /    / \                   /  \                / \    / \
 *        10 (0)40  70              (0)40   70           20  35 50  70    
 *            / \                   / \
 *          35  50                35  50
 **/
void test_avlRemove_remove_node10_and_given_the_bal_factor_of_node40_is_0(void){
  Node *root = &node30;
  int cState =  avlAdd(&root,&node20);
  cState =avlAdd(&root,&node60);
  cState =avlAdd(&root,&node10);
  cState =avlAdd(&root,&node40);   
  cState =avlAdd(&root,&node70);
  cState =avlAdd(&root,&node35);
  cState =avlAdd(&root,&node50);
  
  int heightChange;
  Node *temp = avlRemove(&root,10,&heightChange);

  TEST_ASSERT_EQUAL(1,heightChange);
  TEST_ASSERT_EQUAL_PTR(&node10,temp);
  TEST_ASSERT_EQUAL_NODE(root,&node30,&node60,0);
  TEST_ASSERT_EQUAL_NODE(root->left,&node20,&node35,0);
  TEST_ASSERT_EQUAL_NODE(root->right,&node50,&node70,0);
  TEST_ASSERT_EQUAL_NODE(&node20,NULL,NULL,0);
  TEST_ASSERT_EQUAL_NODE(&node35,NULL,NULL,0);
  TEST_ASSERT_EQUAL_NODE(&node50,NULL,NULL,0);
  TEST_ASSERT_EQUAL_NODE(&node70,NULL,NULL,0);
}
Пример #16
0
 void test_avlRemove_remove_node5_and_given_the_bal_factor_of_node60_is_1_and_given_extra_node65_and_node80(void){
  Node *root = &node30;
  int cState =  avlAdd(&root,&node10);
  cState =avlAdd(&root,&node60);
  cState =avlAdd(&root,&node5);
  cState =avlAdd(&root,&node50);   
  cState =avlAdd(&root,&node70);
  cState =avlAdd(&root,&node65);
  cState =avlAdd(&root,&node80);
  
  int heightChange;
  Node *temp = avlRemove(&root,5,&heightChange);

  TEST_ASSERT_EQUAL(1,heightChange);
  TEST_ASSERT_EQUAL_PTR(&node5,temp);
  TEST_ASSERT_EQUAL_NODE(root,&node30,&node70,0);
  TEST_ASSERT_EQUAL_NODE(&node30,&node10,&node50,0);
  TEST_ASSERT_EQUAL_NODE(&node70,&node65,&node80,0);
  TEST_ASSERT_EQUAL_NODE(&node80,NULL,NULL,0);
  TEST_ASSERT_EQUAL_NODE(&node65,NULL,NULL,0);
  TEST_ASSERT_EQUAL_NODE(&node10,NULL,NULL,0);
  TEST_ASSERT_EQUAL_NODE(&node50,NULL,NULL,0);
}
Пример #17
0
void test_avlGetReplace_expected_BF_of_node60_is_negative_1_and_heightChange_is_0(void){
  
  
  Node *root = &node30;
  int cState =  avlAdd(&root,&node20);
  cState =avlAdd(&root,&node60);
  cState =avlAdd(&root,&node10);
  cState =avlAdd(&root,&node40);   
  cState =avlAdd(&root,&node70);
  cState =avlAdd(&root,&node35);
  cState =avlAdd(&root,&node50);
  
  int heightChange;
  Node *temp = avlGetReplace( &root->right ,&heightChange);
  printf("heightChange = %d\n", heightChange);
  TEST_ASSERT_EQUAL(0,heightChange);
  TEST_ASSERT_EQUAL_PTR(&node35,temp);
  TEST_ASSERT_EQUAL_NODE(root,&node20,&node60,1);
  TEST_ASSERT_EQUAL_NODE(&node20,&node10,NULL,-1);
  TEST_ASSERT_EQUAL_NODE(&node60,&node40,&node70,-1);
  TEST_ASSERT_EQUAL_NODE(&node10,NULL,NULL,0);
  TEST_ASSERT_EQUAL_NODE(&node40,NULL,&node50,1);
  TEST_ASSERT_EQUAL_NODE(&node70,NULL,NULL,0);
}
Пример #18
0
void test_double_rotation_the_tree_by_using_avlAdd_function(void){



  Node* node1 = malloc(sizeof(Node));



 node1 = (Node*)createNode(2, 30);

  node1->left = (Node*)createNode(-1,20);

  node1->left->left = (Node*)createNode(0,10);

  node1->right = (Node*)createNode(-1,80);

  node1->right->left = (Node*)createNode(1,50);

  node1->right->right = (Node*)createNode(-1,100);





  Node* nodeBranch1 = node1->right->left;

  Node* nodeBranch2 = node1->right->right;





  nodeBranch1->left = (Node*)createNode(0,40);

  nodeBranch1->right = (Node*)createNode(1,60);

  nodeBranch1->right->right = (Node*)createNode(0,70);

  nodeBranch2->left = (Node*)createNode(0,90);

  int i;

  i = avlAdd(&node1, ((void *)0));

  nodeBranch1 = node1->right->left;

  nodeBranch2 = node1->right->right;

  Node* nodeBranch3 = node1->left->left;





  UnityAssertEqualNumber((_U_SINT)((50)), (_U_SINT)((node1->data)), (((void *)0)), (_U_UINT)230, UNITY_DISPLAY_STYLE_INT);

  UnityAssertEqualNumber((_U_SINT)((0)), (_U_SINT)((node1->balanceFactor)), (((void *)0)), (_U_UINT)231, UNITY_DISPLAY_STYLE_INT);

  UnityAssertEqualNumber((_U_SINT)((30)), (_U_SINT)((node1->left->data)), (((void *)0)), (_U_UINT)232, UNITY_DISPLAY_STYLE_INT);

  UnityAssertEqualNumber((_U_SINT)((-1)), (_U_SINT)((node1->left->balanceFactor)), (((void *)0)), (_U_UINT)233, UNITY_DISPLAY_STYLE_INT);

  UnityAssertEqualNumber((_U_SINT)((20)), (_U_SINT)((node1->left->left->data)), (((void *)0)), (_U_UINT)234, UNITY_DISPLAY_STYLE_INT);

  UnityAssertEqualNumber((_U_SINT)((-1)), (_U_SINT)((node1->left->left->balanceFactor)), (((void *)0)), (_U_UINT)235, UNITY_DISPLAY_STYLE_INT);

  UnityAssertEqualNumber((_U_SINT)((40)), (_U_SINT)((node1->left->right->data)), (((void *)0)), (_U_UINT)236, UNITY_DISPLAY_STYLE_INT);

  UnityAssertEqualNumber((_U_SINT)((0)), (_U_SINT)((node1->left->right->balanceFactor)), (((void *)0)), (_U_UINT)237, UNITY_DISPLAY_STYLE_INT);

  UnityAssertEqualNumber((_U_SINT)((80)), (_U_SINT)((node1->right->data)), (((void *)0)), (_U_UINT)238, UNITY_DISPLAY_STYLE_INT);

  UnityAssertEqualNumber((_U_SINT)((0)), (_U_SINT)((node1->right->balanceFactor)), (((void *)0)), (_U_UINT)239, UNITY_DISPLAY_STYLE_INT);

  UnityAssertEqualNumber((_U_SINT)((60)), (_U_SINT)((nodeBranch1->data)), (((void *)0)), (_U_UINT)240, UNITY_DISPLAY_STYLE_INT);

  UnityAssertEqualNumber((_U_SINT)((1)), (_U_SINT)((nodeBranch1->balanceFactor)), (((void *)0)), (_U_UINT)241, UNITY_DISPLAY_STYLE_INT);

  UnityAssertEqualNumber((_U_SINT)((100)), (_U_SINT)((nodeBranch2->data)), (((void *)0)), (_U_UINT)242, UNITY_DISPLAY_STYLE_INT);

  UnityAssertEqualNumber((_U_SINT)((-1)), (_U_SINT)((nodeBranch2->balanceFactor)), (((void *)0)), (_U_UINT)243, UNITY_DISPLAY_STYLE_INT);

  UnityAssertEqualNumber((_U_SINT)((70)), (_U_SINT)((nodeBranch1->right->data)), (((void *)0)), (_U_UINT)244, UNITY_DISPLAY_STYLE_INT);

  UnityAssertEqualNumber((_U_SINT)((0)), (_U_SINT)((nodeBranch1->right->balanceFactor)), (((void *)0)), (_U_UINT)245, UNITY_DISPLAY_STYLE_INT);

  UnityAssertEqualNumber((_U_SINT)((90)), (_U_SINT)((nodeBranch2->left->data)), (((void *)0)), (_U_UINT)246, UNITY_DISPLAY_STYLE_INT);

  UnityAssertEqualNumber((_U_SINT)((0)), (_U_SINT)((nodeBranch2->left->balanceFactor)), (((void *)0)), (_U_UINT)247, UNITY_DISPLAY_STYLE_INT);

  UnityAssertEqualNumber((_U_SINT)((10)), (_U_SINT)((nodeBranch3->left->data)), (((void *)0)), (_U_UINT)248, UNITY_DISPLAY_STYLE_INT);

  UnityAssertEqualNumber((_U_SINT)((0)), (_U_SINT)((nodeBranch3->left->balanceFactor)), (((void *)0)), (_U_UINT)249, UNITY_DISPLAY_STYLE_INT);

}
Пример #19
0
void test_add_a_node_and_double_rotation_the_tree_by_using_avlAdd_function(void){



  Node* node1 = malloc(sizeof(Node));



 node1 = (Node*)createNode(2, 30);

  node1->left = (Node*)createNode(-1,20);

  node1->left->left = (Node*)createNode(0,10);

  node1->right = (Node*)createNode(-1,80);

  node1->right->left = (Node*)createNode(1,50);

  node1->right->right = (Node*)createNode(-1,100);





  Node* nodeBranch1 = node1->right->left;

  Node* nodeBranch2 = node1->right->right;





  nodeBranch1->left = (Node*)createNode(0,40);

  nodeBranch1->right = (Node*)createNode(1,60);

  nodeBranch1->right->right = (Node*)createNode(0,70);

  nodeBranch2->left = (Node*)createNode(0,90);

  int i;

  i = avlAdd(&node1, &node110);

  nodeBranch1 = node1->right->left;

  nodeBranch2 = node1->right->right;

  Node* nodeBranch3 = node1->left->left;





  UnityAssertEqualNumber((_U_SINT)((50)), (_U_SINT)((node1->data)), (((void *)0)), (_U_UINT)179, UNITY_DISPLAY_STYLE_INT);

  UnityAssertEqualNumber((_U_SINT)((0)), (_U_SINT)((node1->balanceFactor)), (((void *)0)), (_U_UINT)180, UNITY_DISPLAY_STYLE_INT);

  UnityAssertEqualNumber((_U_SINT)((30)), (_U_SINT)((node1->left->data)), (((void *)0)), (_U_UINT)181, UNITY_DISPLAY_STYLE_INT);

  UnityAssertEqualNumber((_U_SINT)((-1)), (_U_SINT)((node1->left->balanceFactor)), (((void *)0)), (_U_UINT)182, UNITY_DISPLAY_STYLE_INT);

  UnityAssertEqualNumber((_U_SINT)((20)), (_U_SINT)((node1->left->left->data)), (((void *)0)), (_U_UINT)183, UNITY_DISPLAY_STYLE_INT);

  UnityAssertEqualNumber((_U_SINT)((-1)), (_U_SINT)((node1->left->left->balanceFactor)), (((void *)0)), (_U_UINT)184, UNITY_DISPLAY_STYLE_INT);

  UnityAssertEqualNumber((_U_SINT)((40)), (_U_SINT)((node1->left->right->data)), (((void *)0)), (_U_UINT)185, UNITY_DISPLAY_STYLE_INT);

  UnityAssertEqualNumber((_U_SINT)((0)), (_U_SINT)((node1->left->right->balanceFactor)), (((void *)0)), (_U_UINT)186, UNITY_DISPLAY_STYLE_INT);

  UnityAssertEqualNumber((_U_SINT)((80)), (_U_SINT)((node1->right->data)), (((void *)0)), (_U_UINT)187, UNITY_DISPLAY_STYLE_INT);

  UnityAssertEqualNumber((_U_SINT)((0)), (_U_SINT)((node1->right->balanceFactor)), (((void *)0)), (_U_UINT)188, UNITY_DISPLAY_STYLE_INT);

  UnityAssertEqualNumber((_U_SINT)((60)), (_U_SINT)((nodeBranch1->data)), (((void *)0)), (_U_UINT)189, UNITY_DISPLAY_STYLE_INT);

  UnityAssertEqualNumber((_U_SINT)((1)), (_U_SINT)((nodeBranch1->balanceFactor)), (((void *)0)), (_U_UINT)190, UNITY_DISPLAY_STYLE_INT);

  UnityAssertEqualNumber((_U_SINT)((100)), (_U_SINT)((nodeBranch2->data)), (((void *)0)), (_U_UINT)191, UNITY_DISPLAY_STYLE_INT);

  UnityAssertEqualNumber((_U_SINT)((0)), (_U_SINT)((nodeBranch2->balanceFactor)), (((void *)0)), (_U_UINT)192, UNITY_DISPLAY_STYLE_INT);

  UnityAssertEqualNumber((_U_SINT)((70)), (_U_SINT)((nodeBranch1->right->data)), (((void *)0)), (_U_UINT)193, UNITY_DISPLAY_STYLE_INT);

  UnityAssertEqualNumber((_U_SINT)((0)), (_U_SINT)((nodeBranch1->right->balanceFactor)), (((void *)0)), (_U_UINT)194, UNITY_DISPLAY_STYLE_INT);

  UnityAssertEqualNumber((_U_SINT)((90)), (_U_SINT)((nodeBranch2->left->data)), (((void *)0)), (_U_UINT)195, UNITY_DISPLAY_STYLE_INT);

  UnityAssertEqualNumber((_U_SINT)((0)), (_U_SINT)((nodeBranch2->left->balanceFactor)), (((void *)0)), (_U_UINT)196, UNITY_DISPLAY_STYLE_INT);

  UnityAssertEqualNumber((_U_SINT)((10)), (_U_SINT)((nodeBranch3->left->data)), (((void *)0)), (_U_UINT)197, UNITY_DISPLAY_STYLE_INT);

  UnityAssertEqualNumber((_U_SINT)((0)), (_U_SINT)((nodeBranch3->left->balanceFactor)), (((void *)0)), (_U_UINT)198, UNITY_DISPLAY_STYLE_INT);

  UnityAssertEqualNumber((_U_SINT)((110)), (_U_SINT)((nodeBranch2->right->data)), (((void *)0)), (_U_UINT)199, UNITY_DISPLAY_STYLE_INT);

  UnityAssertEqualNumber((_U_SINT)((0)), (_U_SINT)((nodeBranch2->right->balanceFactor)), (((void *)0)), (_U_UINT)200, UNITY_DISPLAY_STYLE_INT);

}
Пример #20
0
Файл: AVL.c Проект: soofatt/AVL
/**
 *Description : To add a node into the AVL tree
 *
 *Inputs : *root -> The pointer to root of the current tree
 *         *nodeToAdd -> The node to be added into the tree
 *
 *Output : root -> The new root of the tree
 *
 */
Node *avlAdd(Node *root, Node *nodeToAdd, int (*compare)(void *, void *)){
  int tempBalanceLeft, tempBalanceRight;
  int compareResult;
  
  if(nodeToAdd == NULL)
    return root;
  
  if(root == NULL){
    root = nodeToAdd;
  }
  
  else{  
  compareResult = compare(root, nodeToAdd);
    if(compareResult == 0)
      Throw(ERR_ALREADY_IN_TREE);
    
    else if(compareResult == 1){
      if(root->leftChild != NULL){
        tempBalanceLeft = (root->leftChild->balance);
        avlAdd(root->leftChild, nodeToAdd, compare);
        if(tempBalanceLeft - (root->leftChild->balance) == 0){}
        else if((root->leftChild->balance) - 0 != 0)
          root->balance--;
        else{}
      }
      
      else{
        root->leftChild = nodeToAdd;
        root->balance--;
      }
    }
    
    else if(compareResult == -1){
      if(root->rightChild != NULL){
        tempBalanceRight = (root->rightChild->balance);
        avlAdd(root->rightChild, nodeToAdd, compare);
        if(tempBalanceRight - (root->rightChild->balance) == 0){}
        else if((root->rightChild->balance) - 0 != 0)
          root->balance++;
        else{}
      }
      
      else{
        root->rightChild = nodeToAdd;
        root->balance++;
      }
    }
  }
    
  if(root->balance == 2 && root->rightChild->balance == 1)
   root = leftRotate(root);
  else if(root->balance == 2 && root->rightChild->balance == 0)
   root = leftRotate(root);
  else if(root->balance == 2 && root->rightChild->balance == -1)
   root = doubleLeftRotate(root);
  else if(root->balance == -2 && root->leftChild->balance == 1)
   root = doubleRightRotate(root);
  else if(root->balance == -2 && root->leftChild->balance == -1)
   root = rightRotate(root);
  else if(root->balance == -2 && root->leftChild->balance == 0)
   root = rightRotate(root);
  else{}
  
  return root;
}
Пример #21
0
 /**                             
 *          80(+1)                     80(+1)                          80(0)  HC = 1;
 *         /     \        ------>     /      \        ----->          /    \
 *       50     140(-1)             50      140(-1)                 50     140(-1)
 *      / \     /    \             / \      /    \                 / \     /    \
 *     40 70 (+1)100 150          40 70 (+2)100  150             40  70 (0)110  150
 *     /       /  \   \          /           \      \           /         / \     \
 *   30      90  110  160      30            110     160       30       100  120   160
 *              /  \                         / \                         \
 *            105  120                     105 120                       105
 **/
void test_avlGetReplace_expected_get_node90_BF_of_node_is_0(void){
  
  Node *root = &node80;
  int cState =  avlAdd(&root,&node50);                 
  cState =avlAdd(&root,&node140);
  cState =avlAdd(&root,&node40);
  cState =avlAdd(&root,&node70);   
  cState =avlAdd(&root,&node100);
  cState =avlAdd(&root,&node150);   
  cState =avlAdd(&root,&node30);   
  cState =avlAdd(&root,&node90);
  cState =avlAdd(&root,&node110);
  cState =avlAdd(&root,&node160);
  cState =avlAdd(&root,&node105);
  cState =avlAdd(&root,&node120);
  
  TEST_ASSERT_EQUAL_NODE(root,&node50,&node140,1);
  TEST_ASSERT_EQUAL_NODE(&node50,&node40,&node70,-1);
  TEST_ASSERT_EQUAL_NODE(&node40,&node30,NULL,-1);
  TEST_ASSERT_EQUAL_NODE(&node140,&node100,&node150,-1);
  TEST_ASSERT_EQUAL_NODE(&node90,NULL,NULL,0);
  TEST_ASSERT_EQUAL_NODE(&node110,&node105,&node120,0);
  TEST_ASSERT_EQUAL_NODE(&node100,&node90,&node110,1);
  TEST_ASSERT_EQUAL_NODE(&node150,NULL,&node160,1);
  
  int heightChange;
  Node *temp = avlGetReplace( &root->right ,&heightChange);
  printf(" heightChange = %d\n", heightChange);
  TEST_ASSERT_EQUAL(0,heightChange);
  TEST_ASSERT_EQUAL_PTR(&node90,temp);
  TEST_ASSERT_EQUAL_NODE(&node110,&node100,&node120,-1);

  TEST_ASSERT_EQUAL_NODE(&node80,&node50,&node140,1);
  TEST_ASSERT_EQUAL_NODE(&node50,&node40,&node70,-1);
  TEST_ASSERT_EQUAL_NODE(&node40,&node30,NULL,-1);
  TEST_ASSERT_EQUAL_NODE(&node70,NULL,NULL,0);
  TEST_ASSERT_EQUAL_NODE(&node140,&node110,&node150,-1);
  TEST_ASSERT_EQUAL_NODE(&node150,NULL,&node160,1);
}