This is a creation in Article, where the information may have evolved or changed.
Package Mainimport ("FMT") type Item struct {key Int}type tree struct {lchild, rchild *treeitem itemcount Int}func Compare (x, y Item) int {var ret intswitch {case X.key > y.key:ret = 1case X.key = = Y.key:ret = 0case X.key & Lt Y.key:ret = -1}return ret}func Create (t *tree, x Item) *tree {if T = = Nil {T = new (tree) T.item = Xt.count = 1} else if com Pare (t.item, x) = = 1 {t.lchild = Create (T.lchild, x)} else if compare (T.item, x) = = 0 {t.count++} else {t.rchild = Create ( T.rchild, x)}return T}func search (t *tree, x Item) *tree {if T = = nil {return nil} else if compare (T.item, x) = = 1 {return Search (T.lchild, x)} else if compare (T.item, x) = =-1 {return search (T.rchild, x)}return T}func main () {var root *treet: = Create (root, item{89}) root = Tiarr: = []int{1, 0}for, Iarr, 98, Si, Si, J, 4,, I: = Range T.PRINTLN (i) Create (root, item{i})}s: = Search (root, item{96}) fmt. PRINTLN (s) s = search (root, item{4}) fmt. PRINTLN (s) s = search (root, item{0}) FMT. PRINTLN (s) s = search (root, item{989}) fmt. Println (s) fmt. Println (Root)}
Results: