summaryrefslogtreecommitdiff
path: root/src/03/avl_tree.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/03/avl_tree.c')
-rw-r--r--src/03/avl_tree.c12
1 files changed, 11 insertions, 1 deletions
diff --git a/src/03/avl_tree.c b/src/03/avl_tree.c
index bafe319..79205e3 100644
--- a/src/03/avl_tree.c
+++ b/src/03/avl_tree.c
@@ -168,7 +168,7 @@ static void print_tree(AVLTree *tree, int level) {
printf(" ");
if (tree) {
- printf("(%d)\n", tree->value);
+ printf("(%d:%d)\n", tree->value, tree->height);
if (!tree->left && !tree->right)
return;
@@ -180,6 +180,16 @@ static void print_tree(AVLTree *tree, int level) {
}
}
+RBTree *avl_tree_to_rb_tree(AVLTree *tree) {
+ if (!tree)
+ return NULL;
+
+ RBTree *rb_tree = rb_tree_initialize(tree->value);
+ rb_tree->left = avl_tree_to_rb_tree(tree->left);
+ rb_tree->right = avl_tree_to_rb_tree(tree->right);
+ return rb_tree;
+}
+
void avl_tree_inspect(AVLTree *tree) {
print_tree(tree, 0);
}