diff --git a/build/CMakeFiles/RBlib.dir/src/Red-Black.cpp.o b/build/CMakeFiles/RBlib.dir/src/Red-Black.cpp.o index dc7142b..ed64ee3 100644 Binary files a/build/CMakeFiles/RBlib.dir/src/Red-Black.cpp.o and b/build/CMakeFiles/RBlib.dir/src/Red-Black.cpp.o differ diff --git a/build/CMakeFiles/main.dir/src/main.cpp.o b/build/CMakeFiles/main.dir/src/main.cpp.o index 4dc8252..293114f 100644 Binary files a/build/CMakeFiles/main.dir/src/main.cpp.o and b/build/CMakeFiles/main.dir/src/main.cpp.o differ diff --git a/build/libRBlib.a b/build/libRBlib.a index a3e7b0b..4f00f93 100644 Binary files a/build/libRBlib.a and b/build/libRBlib.a differ diff --git a/build/main b/build/main index 556cba5..6fab675 100755 Binary files a/build/main and b/build/main differ diff --git a/src/Red-Black.cpp b/src/Red-Black.cpp index 8c1a858..2d33cd7 100644 --- a/src/Red-Black.cpp +++ b/src/Red-Black.cpp @@ -19,7 +19,6 @@ RB::RB() void RB::ins(Node* node, Node* newnode){ int key = newnode -> get_key(); - std::cout << "Inserting " << key << std::endl; if (root == nullptr){ root = newnode; newnode -> set_color(black); @@ -47,7 +46,6 @@ void RB::ins(Node* node, Node* newnode){ Node* p = newnode -> get_parent(); Node* gp; - std::cout << "Inserted, but now correcting" << std::endl; while ((p != nullptr) && (p -> get_color() == red)){ gp = p -> get_parent(); if (gp == nullptr) @@ -71,10 +69,18 @@ void RB::ins(Node* node, Node* newnode){ p = newnode -> get_parent(); //gp = p -> get_parent(); left_rot(newnode); + p = newnode -> get_parent(); + gp = p -> get_parent(); + } + + //Case 3: + else{ //Case 3 p -> set_color(black); gp -> set_color(red); right_rot(gp); + p = newnode -> get_parent(); + gp = p -> get_parent(); } } //end if p = lchild of gp else{ @@ -96,16 +102,22 @@ void RB::ins(Node* node, Node* newnode){ p = newnode -> get_parent(); //gp = p -> get_parent(); left_rot(newnode); - //Case 3 + } + + //Case 3 + else{ + p = newnode -> get_parent(); + gp = p -> get_parent(); p -> set_color(black); gp -> set_color(red); right_rot(gp); + p = newnode -> get_parent(); + gp = p -> get_parent(); } } //this -> get_root() -> set_color(black); } this -> get_root() -> set_color(black); - std::cout << "Finished correcting" << std::endl; } void RB::del(int key){ diff --git a/src/main.cpp b/src/main.cpp index 7c72409..341ae71 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -14,7 +14,6 @@ int main(int argc, char *argv[]) for (int k : init_keys){ Node* newnode = new Node(k); tree.ins(tree.get_root(), newnode); - tree.display(tree.get_root(), nullptr, false); } std::cout << "After insertion" << std::endl;