Commit 262a7ad
Changed files (4)
src
src/03/01/README.md
@@ -48,15 +48,3 @@ Step 6:
/ \ \
(10:r) (17:r) (35:r)
```
-
-```c
-RBTree *avl_tree_to_rb_tree(AVLTree *t) {
- if (!t)
- return NULL;
-
- RBTree *r = rb_tree_initialize_with(t->value, t->height % 2 == 0 ? black : red);
- r->left = avl_tree_to_rb_tree(t->left);
- r->right = avl_tree_to_rb_tree(t->right);
- return r;
-}
-```
src/03/rb_tree.c
@@ -211,3 +211,7 @@ bool rb_equals(RBTree *tree, RBTree *other_tree) {
&& rb_equals(tree->left, other_tree->left)
&& rb_equals(tree->right, other_tree->right);
}
+
+bool rb_tree_is_valid(RBTree *tree) {
+ return false;
+}
src/03/rb_tree.h
@@ -17,5 +17,6 @@ RBTree *rb_tree_initialize(int value);
RBTree *rb_tree_initialize_with(int value, enum Colour colour);
RBTree *rb_tree_insert(RBTree *tree, int value);
bool rb_equals(RBTree *tree, RBTree *other_tree);
+bool rb_tree_is_valid(RBTree *tree);
int rb_tree_size(RBTree *tree);
void rb_tree_inspect(RBTree *tree);
src/03/rb_tree_test.c
@@ -219,6 +219,13 @@ Ensure(equals_returns_false_when_root_and_right_subtree_are_not_equal) {
assert_that(rb_equals(tree, other_tree), is_equal_to(false));
}
+Ensure(is_valid_returns_false_when_root_is_red) {
+ RBTree *tree = rb_tree_initialize(20);
+ tree->colour = red;
+
+ assert_that(rb_tree_is_valid(tree), is_equal_to(false));
+}
+
TestSuite *rb_tree_tests() {
TestSuite *x = create_test_suite();
@@ -241,5 +248,7 @@ TestSuite *rb_tree_tests() {
add_test(x, equals_returns_true_when_root_and_left_subtree_are_equal);
add_test(x, equals_returns_false_when_root_and_left_subtree_are_not_equal);
add_test(x, equals_returns_false_when_root_and_right_subtree_are_not_equal);
+
+ add_test(x, is_valid_returns_false_when_root_is_red);
return x;
}