diff options
| author | mo khan <mo.khan@gmail.com> | 2020-09-20 17:41:28 -0600 |
|---|---|---|
| committer | mo khan <mo.khan@gmail.com> | 2020-09-20 17:41:28 -0600 |
| commit | 57de152bcebc7ffb06ecff616ff00d787ee9a495 (patch) | |
| tree | a5ea31bb09d82e67d063853cb95e8f2a1156ccd3 /src/03/rb_tree.c | |
| parent | 2a9f5f30b3a0bd62cc9889d291a7dd18dc258e51 (diff) | |
refactor: change colouring algorithm
Diffstat (limited to 'src/03/rb_tree.c')
| -rw-r--r-- | src/03/rb_tree.c | 9 |
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)); +} |
