2012-01-07 181 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"