【发布时间】:2016-05-26 17:46:36
【问题描述】:
我有一个用例,我想纠正单词。 我有一组正确和不正确的单词[拼写错误]。 我用所有单词填充树。 我有每个单词的正确和错误版本。
现在,如果我得到“a”这个词来进行更正,
-- 我在 trie 中搜索它。如果 trie 有这个词,我想将这个词与这个词的正确版本相关联。
解决方案: 我可以在 trie 中不正确单词的最后一个节点设置单词的正确版本 ["a1"]。并且可以将其解析为“a1”。
但我必须在最后一个节点存储每个单词的正确版本,这会增加内存占用。 因为我已经加载了所有单词来尝试 [正确/不正确]。 有什么方法可以在正确和不正确的单词之间建立关联,而无需再次将整个单词作为值存储在最后一个节点中? 有指针吗?
public class TrieNode<T> {
private Map<Character, TrieNode<T>> childs;
private boolean complete;
private T value;
....
}
【问题讨论】:
-
如何存储对父节点的引用?这样,您可以从错误的拼写指向正确拼写的最后一个节点,并以相反的顺序恢复结果字符串。
-
这是个好主意。唯一的问题是它可能会增加内存占用,但这是一个好技巧。