Есть ли реализация бинарного дерева поиска в .NET 4? - PullRequest
5 голосов
/ 12 октября 2010

Я ищу встроенную реализацию дерева двоичного поиска в .NET 4. Есть ли такая?

Ответы [ 5 ]

7 голосов
/ 12 октября 2010

Класс SortedDictionary<K,V> использует дерево, это то, что вам нужно?

См. SO ответ для обсуждения.

4 голосов
/ 12 октября 2010

Вы можете использовать SortedDictionary

2 голосов
/ 12 октября 2010

Библиотека C5 :

Класс TreeDictionary реализует интерфейс ISortedDictionary и представляет словарь пар (ключ, значение) или записей, используя упорядоченный сбалансированный красный бинарное дерево. Доступ к записи, удаление записи и вставка записи занимают время O (logn). Перечисление ключей, значений или записей словаря дерева следуют порядку ключей, как определено ключевым компаратором.

2 голосов
/ 12 октября 2010

Другой вариант - использовать список и отсортировать его.Затем вы можете использовать метод BinarySearch для поиска предметов.Чтобы сохранить отсортированный список, вы можете использовать индекс, возвращаемый BinarySearch для вставки в.Если возвращаемый индекс является отрицательным, используйте комплемент (оператор ~) в качестве местоположения вставки, если возвращенный индекс положителен, вы можете вставить его в этом месте (если только вы не хотите установить подобное поведение, в этом случае вообще не вставлять).*

0 голосов
/ 11 октября 2012

http://code.google.com/p/self-balancing-avl-tree/. Сбалансированная реализация дерева AVL с операциями объединения и разделения, а также SortedDictinary и SortedMultiDictionary на основе дерева AVL.

...