Ich habe einen Anwendungsfall, wo ich Wörter korrigieren möchte. Ich habe richtige und falsche Wörter [Rechtschreibfehler] gesetzt. Ich bevölke den Trie mit allen Wörtern. Ich habe sowohl die richtige als auch die falsche Version jedes Wortes.Trie mit Assoziation zwischen Wörtern
im Fall Nun, wenn ich Wort als „a“ für die Korrektur zu erhalten,
- ich es in trie.if trie zu suchen hat dieses Wort, ich will mit der richtigen Version dieses Wortes, dieses Wort assoziieren.
Lösung: ich kann korrekte Version ["a1"] des Wortes am letzten Knoten des falschen Wortes in Trie einstellen. Und kann es auf "a1" auflösen.
Aber ich muss korrekte Version jedes Wortes am letzten Knoten speichern, die den Speicherfußdruck erhöhen wird. Da habe ich alle Wörter geladen, um [richtig/falsch] zu trie. Gibt es eine Möglichkeit, eine Verbindung zwischen korrektem und falschem Wort herzustellen, ohne das gesamte Wort im letzten Knoten erneut als Wert zu speichern? Irgendein Zeiger?
public class TrieNode<T> {
private Map<Character, TrieNode<T>> childs;
private boolean complete;
private T value;
....
}
Wie wäre es, einen Verweis auf den Elternknoten zu speichern? Auf diese Weise können Sie von einer falschen Schreibweise auf den letzten Knoten der korrekten Schreibweise zeigen und die Ergebniszeichenfolge in umgekehrter Reihenfolge wiederherstellen. –
Das ist eine gute Idee. die einzige Sache ist, es könnte Speicherfußabdruck erhöhen, aber ein guter Trick. – user2426785