I\'m looking for an interval tree C# collection class.
I need to be able to add intervals, idealy 2D, otherwise perhaps I could combine two standard 1D interval tree
you can find another c# implementation for an interval tree (based on a self balancing avl tree) @ http://code.google.com/p/intervaltree/
I just wrote another implementation which can be found here: https://github.com/mbuchetics/RangeTree
It also comes with an asynchronous version which rebuilds the tree using the Task Parallel Library (TPL).
There is a download on the codeplex page: http://intervaltree.codeplex.com/SourceControl/list/changesets -> Right hand side -> Download
Yet another implementation can be found at https://github.com/erdomke/RangeTree. Unlike other implementations, it aims to have an interface that is similar to IDictionary<TKey, TValue>
where possible. It can be used as follows:
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"
For future visitors, I've written an implementation as well https://github.com/vvondra/Interval-Tree