From b790582f24558da1353bd8935a963d92d089f005 Mon Sep 17 00:00:00 2001 From: a bellenir Date: Tue, 5 Aug 2014 22:49:58 +0000 Subject: [PATCH] WIP: insert progress --- source/rb/rb.c | 3 ++- tests/test_rb.c | 6 +++--- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/source/rb/rb.c b/source/rb/rb.c index ac7eb4b..cc2b0c4 100644 --- a/source/rb/rb.c +++ b/source/rb/rb.c @@ -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 } diff --git a/tests/test_rb.c b/tests/test_rb.c index dbd51ab..f559fd1 100644 --- a/tests/test_rb.c +++ b/tests/test_rb.c @@ -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); } - */ } -- 2.52.0