github.com/insionng/yougam@v0.0.0-20170714101924-2bc18d833463/libraries/petar/GoLLRB/README.md (about)

     1  # GoLLRB
     2  
     3  GoLLRB is a Left-Leaning Red-Black (LLRB) implementation of 2-3 balanced binary
     4  search trees in Go Language.
     5  
     6  ## Overview
     7  
     8  As of this writing and to the best of the author's knowledge, 
     9  Go still does not have a balanced binary search tree (BBST) data structure.
    10  These data structures are quite useful in a variety of cases. A BBST maintains
    11  elements in sorted order under dynamic updates (inserts and deletes) and can
    12  support various order-specific queries. Furthermore, in practice one often
    13  implements other common data structures like Priority Queues, using BBST's.
    14  
    15  2-3 trees (a type of BBST's), as well as the runtime-similar 2-3-4 trees, are
    16  the de facto standard BBST algoritms found in implementations of Python, Java,
    17  and other libraries. The LLRB method of implementing 2-3 trees is a recent
    18  improvement over the traditional implementation. The LLRB approach was
    19  discovered relatively recently (in 2008) by Robert Sedgewick of Princeton
    20  University.
    21  
    22  GoLLRB is a Go implementation of LLRB 2-3 trees.
    23  
    24  ## Maturity
    25  
    26  GoLLRB has been used in some pretty heavy-weight machine learning tasks over many gigabytes of data.
    27  I consider it to be in stable, perhaps even production, shape. There are no known bugs.
    28  
    29  ## Installation
    30  
    31  With a healthy Go Language installed, simply run `go get github.com/petar/GoLLRB/llrb`
    32  
    33  ## Example
    34      
    35  	package main
    36  
    37  	import (
    38  		"fmt"
    39  		"github.com/petar/GoLLRB/llrb"
    40  	)
    41  
    42  	func lessInt(a, b interface{}) bool { return a.(int) < b.(int) }
    43  
    44  	func main() {
    45  		tree := llrb.New(lessInt)
    46  		tree.ReplaceOrInsert(1)
    47  		tree.ReplaceOrInsert(2)
    48  		tree.ReplaceOrInsert(3)
    49  		tree.ReplaceOrInsert(4)
    50  		tree.DeleteMin()
    51  		tree.Delete(4)
    52  		c := tree.IterAscend()
    53  		for {
    54  			u := <-c
    55  			if u == nil {
    56  				break
    57  			}
    58  			fmt.Printf("%d\n", int(u.(int)))
    59  		}
    60  	}
    61  
    62  ## About
    63  
    64  GoLLRB was written by [Petar Maymounkov](http://pdos.csail.mit.edu/~petar/). 
    65  
    66  Follow me on [Twitter @maymounkov](http://www.twitter.com/maymounkov)!