C#区间树类

本文关键字:区间 | 更新日期: 2023-09-27 18:19:39

我正在寻找一个区间树C#集合类。

我需要能够添加区间,最好是2D,否则我可能会组合两个标准的1D区间树。

我还需要能够找出与给定区间重叠的区间。

我找到了intervaltree.codeplex.com,但

没有与此版本相关的下载。

编辑:

继续这里:C#使用其他代码

C#区间树类

我刚刚写了另一个实现,可以在这里找到:https://github.com/mbuchetics/RangeTree

它还附带了一个异步版本,使用任务并行库(TPL)重建树。

codeplex页面上有一个下载:http://intervaltree.codeplex.com/SourceControl/list/changesets->右侧->下载

您可以为间隔树找到另一个c#实现(基于自平衡avl树)@http://code.google.com/p/intervaltree/

对于未来的访问者,我还编写了一个实现https://github.com/vvondra/Interval-Tree

另一个实现可以在https://github.com/erdomke/RangeTree.与其他实现不同,它的目标是尽可能拥有一个类似于IDictionary<TKey, TValue>的接口。它可以如下使用:

var tree = new RangeTree<int, string>()
{
    { 0, 10, "1" },
    { 20, 30, "2" },
    { 15, 17, "3" },
    { 25, 35, "4" },
};
// Alternatively, use the Add method, for example:
// tree.Add(0, 10, "1");
var results1 = tree[5]; // 1 item: [0 - 10] "1"