search_trees

Utilities for binary search tree, red-black tree, and AVL tree.

Promotional video HERE

Quick Start

```rust use search_trees::prelude::*;

let mut avl = AVLTree::new(2); avl.insert(0); avl.delete(0);

let mut bst = BinarySearchTree::new(); bst.insert(0); bst.delete(0);

let mut rbt = RedBlackTree::new(2); rbt.insert(0); rbt.delete(0);

// you can query the tree using methods like: // - isempty // - contains // - height // - min/max // - ... println!("{:?}", bst.max()); println!("height: {}", bst.height()); println!("isempty: {}", bst.isempty()); println!("countleaves: {}", bst.countleaves()); println!("min: {}", bst.min().unwrap()); println!("max: {}", bst.max().unwrap()); println!("contains 1: {}", bst.contains(1)); println!("contains 10: {}", bst.contains(10)); print!("printinorder: "); bst.print_inorder(); ```

Command Line Interface

Run the command line interface using

$ cargo run

Testing

Run the tests using

$ cargo test

Documentation

Building the documentation using

$ cargo doc

then you can find the documentation in ./target/doc/trees/index.html,

Benchmarks

Run the benchmarks

$ cargo bench

You can find the bench results in ./target/criterion/Compare/report/index.html

To plot pretty figures, use the script ./benches/plot_benches.py

$ cd benches $ python plot_benches.py

You can find the figures in ./target/criterion