summaryrefslogtreecommitdiff
path: root/src/03/rb_tree.c
diff options
context:
space:
mode:
authormo khan <mo.khan@gmail.com>2020-09-20 17:41:28 -0600
committermo khan <mo.khan@gmail.com>2020-09-20 17:41:28 -0600
commit57de152bcebc7ffb06ecff616ff00d787ee9a495 (patch)
treea5ea31bb09d82e67d063853cb95e8f2a1156ccd3 /src/03/rb_tree.c
parent2a9f5f30b3a0bd62cc9889d291a7dd18dc258e51 (diff)
refactor: change colouring algorithm
Diffstat (limited to 'src/03/rb_tree.c')
-rw-r--r--src/03/rb_tree.c9
1 files changed, 8 insertions, 1 deletions
diff --git a/src/03/rb_tree.c b/src/03/rb_tree.c
index 802791e..b6d0700 100644
--- a/src/03/rb_tree.c
+++ b/src/03/rb_tree.c
@@ -176,7 +176,7 @@ static void print_tree(RBTree *tree, int level) {
printf(" ");
if (tree) {
- printf("(%d:%c P:%d)\n", tree->value, tree->colour == red ? 'R' : 'B', tree->parent ? tree->parent->value : -1);
+ printf("(%d%c H:%d)\n", tree->value, tree->colour == red ? 'R' : 'B', rb_tree_height(tree));
if (!tree->left && !tree->right)
return;
@@ -261,3 +261,10 @@ bool rb_tree_is_valid(RBTree *tree) {
return rb_tree_is_valid(tree->left) && rb_tree_is_valid(tree->right);
}
+
+int rb_tree_height(RBTree *tree) {
+ if (!tree)
+ return 1;
+
+ return 1 + max(rb_tree_height(tree->left), rb_tree_height(tree->right));
+}