Self balancing binary tree with logarithmic amortized time of CRUD operations.
Install this package via: go get github.com/stepulak/splay-tree
Usage example:
package main import ( "fmt" splaytree "github.com/stepulak/splay-tree" ) func main() { tree := splaytree.Create(func(a, b interface{}) int { if a, b := a.(int), b.(int); a < b { return -1 } else if a > b { return 1 } return 0 }) tree.Add(1, "value 1") tree.Add(2, "value 2") tree.Add(3, "value 3") fmt.Println(tree) fmt.Println(tree.Root) fmt.Println(tree.Count) node := tree.Find(1) fmt.Println(node) tree.Remove(1) tree.TraverseInorder(func(n *splaytree.Node) { fmt.Println(n) }) }
For more usage info look at source code splaytree.go and splaytree_test.go.