Ich implementiere einen Trie für prädiktive Texteingabe in VB.NET - grundsätzlich Autovervollständigung, was die Verwendung des Trie betrifft. Ich habe meinem Trie eine rekursive Datenstruktur basierend auf der generischen Wörterbuchklasse gemacht.Trie Implementierung Frage
Es ist im Grunde:
class WordTree Inherits Dictionary(of Char, WordTree)
Jeder Buchstaben in einem Wort (alle oberen verrohrten) als Schlüssel zu einer neuen WordTrie verwendet wird. Ein Nullzeichen auf einem Blatt zeigt die Beendigung eines Wortes an. Um ein Wort zu finden, das mit einem Präfix beginnt, laufe ich den Trie so weit, wie mein Präfix geht, dann sammle alle Kinderwörter.
Meine Frage ist im Grunde auf die Implementierung des Trie selbst. Ich verwende die Wörterbuch-Hash-Funktion, um meinen Baum zu verzweigen. Ich könnte eine Liste verwenden und eine lineare Suche über die Liste durchführen oder etwas anderes tun. Was ist der reibungslose Umzug hier? Ist das ein vernünftiger Weg, meine Verzweigung zu machen?
Danke.
Update:
Nur um zu klären, ich frage im Grunde, wenn das Wörterbuch Ansatz Verzweigung offensichtlich schlechter als eine andere Alternative. Die Anwendung, in der ich diese Datenstruktur verwende, verwendet nur Großbuchstaben, also ist der Array-Ansatz vielleicht der beste. Ich könnte die gleiche Datenstruktur für eine komplexere Art-Ahead-Situation in der Zukunft verwenden (mehr Zeichen). In diesem Fall klingt es nach dem richtigen Ansatz - bis zu dem Punkt, an dem ich etwas Komplexeres verwenden muss.
ist das nur a-z? d. h. keine Internationalisierung – MarkJ
Ja, nur 26 Buchstaben plus Nullzeichen. – Steve
können Sie mehr Feedback geben, damit wir die Frage vollständig beantworten können? – sfossen