Commit 383ee26
Changed files (2)
src
src/03/avl_tree.c
@@ -194,8 +194,14 @@ RBTree *_avl_tree_to_rb_tree(AVLTree *tree, AVLTree *parent) {
enum Colour colour = (parent && is_even(parent->height) && is_odd(tree->height)) ? red : black;
RBTree *rb_tree = rb_tree_initialize_with(tree->value, colour);
+
rb_tree->left = _avl_tree_to_rb_tree(tree->left, tree);
+ if (rb_tree->left)
+ rb_tree->left->parent = rb_tree;
+
rb_tree->right = _avl_tree_to_rb_tree(tree->right, tree);
+ if (rb_tree->right)
+ rb_tree->right->parent = rb_tree;
return rb_tree;
}
src/03/avl_tree_test.c
@@ -342,6 +342,8 @@ Ensure(to_rb_tree_handles_trees_with_a_large_depth) {
RBTree *actual = avl_tree_to_rb_tree(subject);
assert_that(rb_equals(expected, actual), is_equal_to(true));
+ assert_that(rb_tree_is_valid(actual), is_equal_to(true));
+ assert_that(rb_tree_is_valid(expected), is_equal_to(true));
}
TestSuite *avl_tree_tests() {