2010-10-12 9 views

Antwort

7

Die Klasse SortedDictionary<K,V> verwendet einen Baum, ist das wonach Sie suchen?

Siehe diese SO answer für eine Diskussion.

2

Eine weitere Option, um eine Liste zu verwenden ist und es zu sortieren. Dann können Sie die BinarySearch-Methode verwenden, um Elemente zu finden. Um die sortierte Liste zu pflegen, können Sie den von der BinarySearch zurückgegebenen Index verwenden, um einzufügen. Wenn der zurückgegebene Index negativ ist, verwenden Sie den Komplementoperator (~ operator) als Einfügeposition. Wenn der zurückgegebene Index positiv ist, können Sie ihn an dieser Position einfügen (es sei denn, Sie möchten ein ähnliches Verhalten in diesem Fall festlegen).

+1

Dies bietet die gleiche Suchsemantik, aber die zugrunde liegende Struktur ist immer noch eine einfache alte Liste, keine BST. –

+0

Guter Anruf, dachte nicht durch, als ich das gepostet habe (nur 1 Tasse Kaffee zu der Zeit). Ich benutze die Liste mit dem BinarySearch und ergänze den Index, um die BST-Suchsemantik zu erhalten. Ich sollte es genauer lesen :) – pstrjds

2

C5 library:

Klasse TreeDictionary implementiert Schnittstelle ISortedDictionary und stellt ein Wörterbuch von (Schlüssel, Wert) -Paare, oder Einträge, eine geordnete ausgewogene redblack Binärbaums verwendet. Der Zugriff auf Einträge, das Löschen von Einträgen und das Einfügen von Einträgen benötigen Zeit O (logn). Aufzählung der Schlüssel, Werte oder Einträge eines Baumwörterbuchs folgen der Schlüsselreihenfolge , wie durch den Schlüsselvergleich bestimmt.