2012-01-07 183 views
1

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

我需要能够添加间隔,意思是2D,否则我可以结合两个标准的一维间隔树。

我还需要能够找出什么区间重叠给定的时间间隔。

我发现这个intervaltree.codeplex.com

没有与本新闻稿相关的下载。

编辑:

继续在这里:C# using others code

+0

如果间隔大致相同,并有一个相对较小的上限大小,你可以用一个简单的二维数组。这就是我几年前在RTS游戏中所做的。 – CodesInChaos 2012-01-07 22:07:53

+0

我已在下载页面中放置源文件的下载文件。希望现在会更容易。 – 2012-07-02 09:56:48

回答

4

还有就是CodePlex上网页上提供下载:http://intervaltree.codeplex.com/SourceControl/list/changesets - >右边 - >下载

+0

谢谢。该网站令人困惑。 – alan2here 2012-01-07 22:20:52

+0

此外,“该版本的应用程序不支持解决方案文件夹”,因此我无法正确打开该项目,但似乎三个.cs文件非常重要。将它们复制到项目中我想在​​结果中使用它们“无法自动检测哪个导入程序用于”Interval.cs“。没有导入程序处理此文件类型。指定在您的项目中处理此文件类型的导入程序。 。除了将所有文件中的所有代码复制粘贴到项目中我想要使用该类的任何想法? – alan2here 2012-01-07 22:24:11

+0

@ alan2here我在VS 2010中打开解决方案时没有任何问题。 – ChrisWue 2012-01-07 22:38:40

5

我只是写它可以是另一种实现方式在这里找到: https://github.com/mbuchetics/RangeTree

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

+0

你写这个版本的原因是什么?它是否像其他人一样自我平衡? – Dizzle 2017-02-15 12:16:53

2

你可以找到一个区间树(基于自平衡的AVL树)@http://code.google.com/p/intervaltree/

+0

我最喜欢这个,因为它是自我平衡的,可以在不重建的情况下处理更新。 – 2013-05-17 11:07:54

0

另一种实现可以被发现在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"