C # Интервальный класс дерева - PullRequest
2 голосов
/ 08 января 2012

Я ищу интервальное дерево класса C # коллекции.

Мне нужно иметь возможность добавлять интервалы, в идеале 2D, иначе, возможно, я мог бы объединить два стандартных дерева одномерных интервалов.

Мне также нужно знать, какие интервалы перекрывают данный интервал.

Я нашел это intervaltree.codeplex.com , но

Нет загрузок, связанных с этим выпуском.

редактирование:

Продолжить здесь: C #, используя другой код

Ответы [ 5 ]

5 голосов
/ 29 мая 2012

Я только что написал другую реализацию, которую можно найти здесь: https://github.com/mbuchetics/RangeTree

Она также поставляется с асинхронной версией, которая перестраивает дерево с помощью библиотеки параллельных задач (TPL).

4 голосов
/ 08 января 2012

На странице кодплекса имеется загрузка: http://intervaltree.codeplex.com/SourceControl/list/changesets -> Правая сторона -> Загрузка

3 голосов
/ 25 октября 2012

Для будущих посетителей я также написал реализацию https://github.com/vvondra/Interval-Tree

2 голосов
/ 25 июля 2012

вы можете найти другую реализацию c # для дерева интервалов (на основе самобалансирующегося дерева avl) @ http://code.google.com/p/intervaltree/

0 голосов
/ 14 ноября 2016

Еще одна реализация может быть найдена в 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"
...