package
0.0.0-20190403020015-393222b97125
Repository: https://github.com/shady831213/algorithms.git
Documentation: pkg.go.dev
# README
Reduced-Space van Emde Boas Tree
https://en.wikipedia.org/wiki/Van_Emde_Boas_tree
Support single key multi value.Lazy hashtable is used to instead of array to reduce space complexity.
use log2(upper) instead upper.
Go Mixin design pattern
//define mixin interface
type rsVEBTreeMixin interface {
Less(int, interface{}, interface{}) bool
High(int, interface{}) interface{}
Low(int, interface{}) interface{}
Index(int, interface{}, interface{}) interface{}
}
//struct calling mixin method
type rsVEBTreeElement struct {
//...
mixin rsVEBTreeMixin
}
func (e *rsVEBTreeElement) init(lgu int, mixin rsVEBTreeMixin) *rsVEBTreeElement {
//...
e.mixin = mixin
return e
}
//mixin struct
type rsVEBTreeUInt32Mixin struct {
rsVEBTreeMixin
}
func (m *rsVEBTreeUInt32Mixin) Less(lgu int, k1, k2 interface{}) bool {
//...
}
func (m *rsVEBTreeUInt32Mixin) High(lgu int, key interface{}) interface{} {
//...
}
func (m *rsVEBTreeUInt32Mixin) Low(lgu int, key interface{}) interface{} {
//...
}
func (m *rsVEBTreeUInt32Mixin) Index(lgu int, high, low interface{}) interface{} {
//...
}
//composition
func NewRsVEBTreeUint32(lgu int) *rsVEBTreeElement {
//...
return new(rsVEBTreeElement).init(lgu, new(rsVEBTreeUInt32Mixin))
}