const LEAF_HEIGHT …
const ZERO_HEIGHT …
const NOT_KEY32 …
type T …
type node32 …
func makeNode(key int32) *node32 { … }
func (t *T) IsEmpty() bool { … }
func (t *T) IsSingle() bool { … }
func (t *T) VisitInOrder(f func(int32, interface{ … }
func (n *node32) nilOrData() interface{ … }
func (n *node32) nilOrKeyAndData() (k int32, d interface{ … }
func (n *node32) height() int8 { … }
func (t *T) Find(x int32) interface{ … }
func (t *T) Insert(x int32, data interface{ … }
func (t *T) Copy() *T { … }
func (t *T) Delete(x int32) interface{ … }
func (t *T) DeleteMin() (int32, interface{ … }
func (t *T) DeleteMax() (int32, interface{ … }
func (t *T) Size() int { … }
func (t *T) Intersection(u *T, f func(x, y interface{ … }
func (t *T) Union(u *T, f func(x, y interface{ … }
func (t *T) Difference(u *T, f func(x, y interface{ … }
func (t *T) Iterator() Iterator { … }
func (t *T) Equals(u *T) bool { … }
func (t *T) String() string { … }
func (t *node32) equals(u *node32) bool { … }
func (t *T) Equiv(u *T, eqv func(x, y interface{ … }
func (t *node32) equiv(u *node32, eqv func(x, y interface{ … }
type iterator …
type Iterator …
func (it *Iterator) Next() (int32, interface{ … }
func (it *Iterator) Done() bool { … }
func (t *node32) iterator() iterator { … }
func (it *iterator) leftmost(t *node32) { … }
func (it *iterator) done() bool { … }
func (it *iterator) next() *node32 { … }
func (t *T) Min() (k int32, d interface{ … }
func (t *T) Max() (k int32, d interface{ … }
func (t *T) Glb(x int32) (k int32, d interface{ … }
func (t *T) GlbEq(x int32) (k int32, d interface{ … }
func (t *T) Lub(x int32) (k int32, d interface{ … }
func (t *T) LubEq(x int32) (k int32, d interface{ … }
func (t *node32) isLeaf() bool { … }
func (t *node32) visitInOrder(f func(int32, interface{ … }
func (t *node32) find(key int32) *node32 { … }
func (t *node32) min() *node32 { … }
func (t *node32) max() *node32 { … }
func (t *node32) glb(key int32, allow_eq bool) *node32 { … }
func (t *node32) lub(key int32, allow_eq bool) *node32 { … }
func (t *node32) aInsert(x int32) (newroot, newnode, oldnode *node32) { … }
func (t *node32) aDelete(key int32) (deleted, newSubTree *node32) { … }
func (t *node32) aDeleteMin() (deleted, newSubTree *node32) { … }
func (t *node32) aDeleteMax() (deleted, newSubTree *node32) { … }
func (t *node32) aRebalanceAfterLeftDeletion(oldLeftHeight int8, tleft *node32) *node32 { … }
func (t *node32) aRebalanceAfterRightDeletion(oldRightHeight int8, tright *node32) *node32 { … }
func (t *node32) aRightIsHigh(newnode *node32) *node32 { … }
func (t *node32) aLeftIsHigh(newnode *node32) *node32 { … }
func (t *node32) rightToRoot() *node32 { … }
func (t *node32) leftToRoot() *node32 { … }
func (t *node32) copy() *node32 { … }