2010-10-12 8 views

Odpowiedz

7

Klasy SortedDictionary<K,V> używa drzewa, to jest to, czego szukasz?

Zobacz tę dyskusję w SO answer.

2

Inną opcją jest użycie listy i rozwiązać go. Następnie możesz użyć metody BinarySearch, aby znaleźć przedmioty. Aby zachować posortowaną listę, możesz użyć indeksu zwróconego przez BinarySearch do wstawienia w. Jeśli zwracany indeks jest ujemny, użyj operatora dopełnienia (~) jako lokalizacji wstawki, jeśli zwracany indeks jest dodatni, możesz wstawić w tym miejscu (chyba, że ​​chcesz ustawić zachowanie podobne, w takim przypadku nie wstawiaj wcale).

+1

Zapewnia taką samą semantykę wyszukiwania, ale podstawową strukturą jest nadal zwykła stara lista, a nie BST. –

+0

Dobra rozmowa, nie przemyślałam tego, kiedy to napisałem (tylko 1 filiżanka kawy w tym czasie). Używam List ze wstawką indeksu BinarySearch i uzupełnienia, aby uzyskać semantykę wyszukiwania BST. Powinienem przeczytać uważniej :) – pstrjds

2

C5 library:

Klasa TreeDictionary implementuje interfejsu ISortedDictionary i reprezentuje słownikiem (klucz, wartość) pary, lub wpisów, z wykorzystaniem uporządkowaną zrównoważony RedBlack drzewo binarne. Dostęp do wpisu, kasowanie wpisu i wstawianie wpisu zabierają czas O (logn). Wyliczanie kluczy, wartości lub wpisów w słowniku drzewiastym odbywa się zgodnie z kolejnością klawiszy, określona przez klucz porównujący.

Powiązane problemy