diff options
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)); +} |
