Ответ 1
На странице codeplex есть загрузка: http://intervaltree.codeplex.com/SourceControl/list/changesets → Правая сторона → Загрузить
Я ищу класс коллекции С# с интервальным деревом.
Мне нужно иметь возможность добавлять интервалы, идеально 2D, иначе я мог бы объединить два стандартных дерева с интервалом 1D.
Мне также нужно выяснить, какие интервалы перекрывают данный интервал.
Я нашел это intervaltree.codeplex.com, но
В этом выпуске нет загрузок.
изменить:
Продолжить здесь: С# с помощью кода других пользователей
На странице codeplex есть загрузка: http://intervaltree.codeplex.com/SourceControl/list/changesets → Правая сторона → Загрузить
Я просто написал еще одну реализацию, которую можно найти здесь: https://github.com/mbuchetics/RangeTree
Он также поставляется с асинхронной версией, которая восстанавливает дерево с помощью параллельной библиотеки задач (TPL).
Для будущих посетителей я написал также реализацию https://github.com/vvondra/Interval-Tree
вы можете найти другую реализацию С# для дерева интервалов (основанное на собственном балансировочном дереве avl) @http://code.google.com/p/intervaltree/
Еще одна реализация может быть найдена в 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"