Skip to content

Commit 271bc78

Browse files
handling non existing node removal
1 parent a61efd8 commit 271bc78

File tree

2 files changed

+10
-7
lines changed

2 files changed

+10
-7
lines changed

0x05-red_black_tree/4-rb_tree_remove.c

+1-1
Original file line numberDiff line numberDiff line change
@@ -189,7 +189,7 @@ rb_tree_t *rb_tree_remove(rb_tree_t *root, int value)
189189
}
190190
/*'n' didn't exist in the tree */
191191
if (node == nullptr)
192-
return (nullptr);
192+
return (root);
193193
nodeBeingRemoved = GetNodetoBeRemoved(node);
194194
/*At most one will not be a nullptr */
195195
nodeToBeReplaced = nodeBeingRemoved->left == nullptr ? nodeBeingRemoved->right

0x05-red_black_tree/tests/4-main.c

+9-6
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@ void rb_tree_print(const rb_tree_t *tree);
1212
int main(void)
1313
{
1414
rb_tree_t *tree;
15-
1615
int array[] = { 20, 30, 25, 89, 10, 35, 250, 8, 7 };
1716
size_t n = sizeof(array) / sizeof(array[0]);
1817

@@ -21,12 +20,11 @@ int main(void)
2120
return (1);
2221

2322
rb_tree_print(tree);
24-
2523
tree = rb_tree_remove(tree, 10);
2624
printf("\nDeleted: %d\n", 10);
27-
2825
rb_tree_print(tree);
29-
26+
printf("Red-Black Tree is %s\n",
27+
rb_tree_is_valid(tree) ? "valid" : "Invalid");
3028
tree = rb_tree_remove(tree, 25);
3129
printf("\nDeleted: %d\n", 25);
3230
rb_tree_print(tree);
@@ -42,8 +40,13 @@ int main(void)
4240
rb_tree_print(tree);
4341
printf("Red-Black Tree is %s\n",
4442
rb_tree_is_valid(tree) ? "valid" : "Invalid");
45-
tree = rb_tree_remove(tree, 89);
46-
printf("\nDeleted: %d\n", 89);
43+
tree = rb_tree_remove(tree, 30);
44+
printf("\nDeleted: %d\n", 30);
45+
rb_tree_print(tree);
46+
printf("Red-Black Tree is %s\n",
47+
rb_tree_is_valid(tree) ? "valid" : "Invalid");
48+
tree = rb_tree_remove(tree, 0);
49+
printf("\nDeleted: %d\n", 0);
4750
rb_tree_print(tree);
4851
printf("Red-Black Tree is %s\n",
4952
rb_tree_is_valid(tree) ? "valid" : "Invalid");

0 commit comments

Comments
 (0)