在 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]


眼眸繁星
浏览 192回答 2
2回答
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go