prefix-tree-rs 0.1.1

A Trie (prefix tree) implementation
Documentation
# Prefix Tree (Trie) Implementation in Rust

A lightweight and efficient implementation of a Trie (prefix tree) data structure in Rust. This library provides a way to store and retrieve strings based on their prefixes, making it ideal for applications like autocomplete, spell checkers, and IP routing tables.

## Features

- Fast prefix-based string operations
- Memory-efficient storage of strings with common prefixes
- Simple and intuitive API
- Fully documented with examples
- Comprehensive test coverage

## Installation

Add this to your `Cargo.toml`:

```toml
[dependencies]
prefix_tree_rs = "0.1.1"
```

## Usage

### Basic Example

```rust
use prefix_tree_rs::Trie;

fn main() {
    // Create a new Trie
    let mut trie = Trie::new();

    // Insert some words
    trie.insert("hello");
    trie.insert("world");
    trie.insert("helm");

    // Search for words
    assert!(trie.search("hello"));     // true
    assert!(!trie.search("hell"));     // false

    // Check prefixes
    assert!(trie.starts_with("he"));   // true
    assert!(!trie.starts_with("wo")); // true
}
```

### API Reference

#### `Trie::new()`
Creates a new, empty Trie.

#### `Trie::insert(&mut self, word: &str)`
Inserts a word into the Trie.

#### `Trie::search(&self, word: &str) -> bool`
Checks if a word exists in the Trie.

#### `Trie::starts_with(&self, prefix: &str) -> bool`
Checks if there is any word in the Trie that starts with the given prefix.

## Implementation Details

The Trie is implemented using two main structures:

- `Trie`: The main structure containing the root node
- `TrieNode`: Individual nodes containing:
  - A boolean flag indicating if it's the end of a word
  - A HashMap of child nodes mapped by characters

## Performance

- Time Complexity:
  - Insertion: O(m) where m is the length of the word
  - Search: O(m) where m is the length of the word
  - Prefix checking: O(p) where p is the length of the prefix

- Space Complexity:
  - O(ALPHABET_SIZE * N * W) where N is the number of words and W is the average word length

## Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

## License

This project is licensed under the MIT License - see the LICENSE file for details.