根據這一link stathat採用與他們treap重疊:stathat重疊treap包?
GoLLRB是偉大的,我們沒有理由你應該切換。我們以爲 treaps背後的想法是對我們的問題的一個優雅的解決方案,所以我們 實現它。我們喜歡GoLLRB提供的界面,所以我們 在我們的實現中模仿它。
我們添加到treap包中的一件事是允許您使用重疊函數迭代 ,因此您可以獲得[3,9)中的所有密鑰,對於 示例。我們使用了很多,通常以結構作爲關鍵。
帕特里克
我玩用下面的代碼,而且不知道如何繼續:
package main
import(
"reflect"
"fmt"
"github.com/stathat/treap"
)
func IntLess(p, q interface{}) bool {
return p.(int) < q.(int)
}
func BucketOverlap(a, b interface{}) bool {
return false
}
func main() {
tree := treap.NewOverlapTree(IntLess, BucketOverlap)
tree.Insert(5, "a")
tree.Insert(7, "b")
tree.Insert(2, "c")
tree.Insert(1, "d")
for v := range tree.IterateOverlap([]int{2,5}) {
fmt.Printf("val: %v\n", v)
}
}
比方說,我想在範圍鍵[2,5]
=>[c,a]