我正在寻找一个区间树 C# 集合类。
我需要能够添加间隔,最好是 2D,否则我可以组合两个标准的 1D 间隔树。
我还需要能够找出哪些间隔与给定间隔重叠。
我找到了这个intervaltree.codeplex.com但是
没有与此版本相关的下载。
编辑:
在此处继续:使用其他代码的 C#
我正在寻找一个区间树 C# 集合类。
我需要能够添加间隔,最好是 2D,否则我可以组合两个标准的 1D 间隔树。
我还需要能够找出哪些间隔与给定间隔重叠。
我找到了这个intervaltree.codeplex.com但是
没有与此版本相关的下载。
编辑:
在此处继续:使用其他代码的 C#
我刚刚写了另一个实现,可以在这里找到: https ://github.com/mbuchetics/RangeTree
它还附带一个异步版本,该版本使用任务并行库 (TPL) 重建树。
在 codeplex 页面上有下载:http: //intervaltree.codeplex.com/SourceControl/list/changesets -> 右手边 -> 下载
对于未来的访问者,我还编写了一个实现https://github.com/vvondra/Interval-Tree
您可以找到间隔树的另一个 c# 实现(基于自平衡 avl 树)@ http://code.google.com/p/intervaltree/
另一个实现可以在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"