package treap

import "stathat.com/c/treap"

Install: go get stathat.com/c/treap

Package treap provides a balanced binary search tree data structure, expected to have logarithmic height.

This implementation borrows a lot of ideas from GoLLRB.

Usage

To create a tree, you need a function that will compare your keys. Here's one for int keys.

func IntLess(p, q interface{}) bool {
        return p.(int) < q.(int)
}

Then create the tree:

tree := NewTree(IntLess)

Put some stuff in it:

tree.Insert(5, "a")
tree.Insert(7, "b")
tree.Insert(2, "c")
tree.Insert(1, "d")

Get values:

x := tree.Get(2)

Check if a key exists:

if tree.Exists(17) { ... }

Delete a node:

tree.Delete(7)

Iterate over your data in order:

for v := range tree.IterAscend() {
        fmt.Printf("%s\n", v)
}

There are more functions. Look in treap.go for all of them.