C# Interval tree class

2019-01-24 22:27发布

问题:

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 trees.

I also need to be able to find out what intervals overlap a given interval.

I found this intervaltree.codeplex.com but

There are no downloads associated with this release.

edit:

Continue here: C# using others code

回答1:

There is a download on the codeplex page: http://intervaltree.codeplex.com/SourceControl/list/changesets -> Right hand side -> Download



回答2:

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).



回答3:

For future visitors, I've written an implementation as well https://github.com/vvondra/Interval-Tree



回答4:

you can find another c# implementation for an interval tree (based on a self balancing avl tree) @ http://code.google.com/p/intervaltree/



回答5:

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"