]> git.mdlowis.com Git - projs/libcds.git/commitdiff
WIP: insert progress
authora bellenir <a@bellenir.com>
Tue, 5 Aug 2014 22:49:58 +0000 (22:49 +0000)
committera bellenir <a@bellenir.com>
Tue, 5 Aug 2014 22:49:58 +0000 (22:49 +0000)
source/rb/rb.c
tests/test_rb.c

index ac7eb4bc63c3fb674fc71d538cc7f61ceb58aac2..cc2b0c41079b457bc2f0e4ea4bb6c44079a181d2 100644 (file)
@@ -47,10 +47,11 @@ static void rb_tree_recolor(rb_node_t* node){
                node->color = BLACK;
        }else if(BLACK == node_color(parent)){
                /* dont need to do anything */
-       }else if(node_color(parent) == BLACK && node_color(uncle) == BLACK){
+       }else if(node_color(parent) == RED && node_color(uncle) == RED){
                grandparent->color = RED;
                parent->color = BLACK;
                uncle->color = BLACK;
+               rb_tree_recolor(grandparent);
        }else{
                //TODO
        }
index dbd51ab19d7c4115dc254c7e22db3f634478c114..f559fd193e15e229e5e9f63600c0f61fd81282b6 100644 (file)
@@ -99,7 +99,6 @@ TEST_SUITE(RB) {
                CHECK(rb_tree_is_valid(tree));
                mem_release(tree);
     }
-    /*
     TEST(Verify_rb_insert_below_full_first_level_works){
                rb_tree_t* tree = rb_tree_new();
                rb_node_t* root = rb_tree_insert(tree, 42);
@@ -112,10 +111,11 @@ TEST_SUITE(RB) {
                CHECK(NULL == node3->left);
                CHECK(NULL == node3->right);
                CHECK(BLACK == root->color);
-               CHECK(
+               CHECK(BLACK == node1->color);
+               CHECK(BLACK == node2->color);
+               CHECK(RED == node3->color);
                CHECK(rb_tree_is_valid(tree));
                mem_release(tree);
     }
-    */
 }