Tree_collections

The purpose of this library is to provide APIs that allows users to create memory efficient binary search tree, red-black tree and AVL tree. Besides, by using this library, users can investigate the performance difference between red-black tree and avl tree, which helps them deeply understand the algorithms.

Quick Start

```rust use tree_collections::prelude::*;

let mut rbtree = RBTree::new(); rbtree.insert(1); rbtree.insert(2); rbtree.insert(3); rbtree.insert(4); rbtree.insert(5); rbtree.delete(3); println!("Red-Black Tree:"); rbtree.print(); println!("Number of leaves: {:?}", rbtree.countleaves()); println!("Height of tree: {:?}", rb_tree.height());

let mut avltree = AVLTree::new(); avltree.insert(1); avltree.insert(2); avltree.insert(3); avltree.insert(4); avltree.insert(5); avltree.delete(3); println!("AVL Tree:"); avltree.print(); println!("Number of leaves: {:?}", rbtree.countleaves()); println!("Height of tree: {:?}", rb_tree.height());

```

Documentation

Building the documentation using

$ cargo doc Find the API doc at

./target/doc/tree_collections/index.html

User Promote

Run the user promote

$ cargo run

List of operations $ insert $ delete $ count $ height $ inorder print $ preorder print $ empty $ search $ print tree $ exit

Testing

Run the tests using

$ cargo test

Benchmark

Run the Benchmark using

$ cargo bench

Requirements

Cargo version: 1.56^ Ref: https://blog.rust-lang.org/2021/10/21/Rust-1.56.0.html