The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
Tree-RB version 0.1

NAME
    Tree::RB - Perl implementation of the Red/Black tree, a type of balanced
    binary search tree.

SYNOPSIS
        use Tree::RB;

        my $tree = Tree::RB->new;
        $tree->put('France'  => 'Paris');
        $tree->put('England' => 'London');
        $tree->put('Hungary' => 'Budapest');
        $tree->put('Ireland' => 'Dublin');
        $tree->put('Egypt'   => 'Cairo');
        $tree->put('Germany' => 'Berlin');

        $tree->put('Alaska' => 'Anchorage'); # D'oh!
        $tree->delete('Alaska');

        print $tree->get('Ireland'); # 'Dublin'

        print $tree->min->key; # 'Egypt' 
        print $tree->max->key; # 'Ireland' 
        print $tree->size; # 6

        # print items, ordered by key
        my $it = $tree->iter;

        while(my $node = $it->next) {
            sprintf "key = %s, value = %s\n", $node->key, $node->val;
        }

        # print items in reverse order
        $it = $tree->rev_iter;

        while(my $node = $it->next) {
            sprintf "key = %s, value = %s\n", $node->key, $node->val;
        }

        # Hash interface
        tie my %capital, 'Tree::RB';

        # or do this to store items in descending order 
        tie my %capital, 'Tree::RB', sub { $_[1] cmp $_[0] };

        $capital{'France'}  = 'Paris';
        $capital{'England'} = 'London';
        $capital{'Hungary'} = 'Budapest';
        $capital{'Ireland'} = 'Dublin';
        $capital{'Egypt'}   = 'Cairo';
        $capital{'Germany'} = 'Berlin';

        # print items in order
        while(my ($key, $val) = each %capital) {
            printf "key = $key, value = $val\n";
        }

DESCRIPTION
    This is a Perl implementation of the Red/Black tree, a type of balanced
    binary search tree.

    A tied hash interface is also provided to allow ordered hashes to be
    used.

    See the Wikipedia article at
    <http://en.wikipedia.org/wiki/Red-black_tree> for more on Red/Black
    trees.

INSTALLATION

To install this module, run the following commands:

    perl Makefile.PL
    make
    make test
    make install


DEPENDENCIES

None.


COPYRIGHT AND LICENCE

Copyright (C) 2007, Arun Prasad

This library is free software; you can redistribute it and/or modify
it under the same terms as Perl itself.