summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormo khan <mo.khan@gmail.com>2020-08-29 19:02:12 -0600
committermo khan <mo.khan@gmail.com>2020-08-29 19:02:12 -0600
commit1f952f1a103c7d5c40e1ed4e869714d86ac720ac (patch)
treee2cd154102fbde0295d8e57018d7230a726bac25
parentab994a83dbed26279aa4b4d28e15de111a514b0d (diff)
refactor: extract convenience constructor
-rw-r--r--src/03/rb_tree.c14
1 files changed, 8 insertions, 6 deletions
diff --git a/src/03/rb_tree.c b/src/03/rb_tree.c
index b28d852..5bb1017 100644
--- a/src/03/rb_tree.c
+++ b/src/03/rb_tree.c
@@ -155,9 +155,9 @@ static void print_tree(RBTree *tree, int level) {
}
}
-RBTree *rb_tree_initialize(int value) {
+RBTree *rb_tree_initialize_with(int value, enum Colour colour) {
RBTree *tree = malloc(sizeof(RBTree));
- tree->colour = black;
+ tree->colour = colour;
tree->left = NULL;
tree->parent = NULL;
tree->right = NULL;
@@ -165,13 +165,15 @@ RBTree *rb_tree_initialize(int value) {
return tree;
}
-RBTree *rb_tree_insert(RBTree *tree, int value) {
- RBTree *node = rb_tree_initialize(value);
+RBTree *rb_tree_initialize(int value) {
+ return rb_tree_initialize_with(value, black);
+}
+RBTree *rb_tree_insert(RBTree *tree, int value) {
if (tree == NULL)
- return node;
+ return rb_tree_initialize(value);
- node->colour = red;
+ RBTree *node = rb_tree_initialize_with(value, red);
insert(tree, node);
repair_from(node);
return root_of(node);