我已经实现了基本前缀树或“trie”。这个trie由这样的节点组成:基本前缀树实现问题
// pseudo-code
struct node {
char c;
collection<node> childnodes;
};
说我给我的trie添加下列单词:“Apple”,“Ark”和“Cat”。现在当我查找“Ap”和“Ca”前缀时,我的trie的“bool containsPrefix(string prefix)”方法将正确返回true。
现在我正在执行“bool containsWholeWord(string word)”方法,它将为“Cat”和“Ark”返回true,但在“App”(以上示例)中返回false。
一个trie中的节点有某种“endOfWord”标志常见吗?这将有助于确定查找的字符串是否实际上是输入到trie中的整个单词而不仅仅是前缀。
干杯!
感谢您的回复。不过,我通过检查空的childnodes集合来尝试指示叶节点(就像你提到的那样)。这并不能解决以下问题:将“Apple”插入到trie中。将“Appl”插入到trie中。询问“苹果”是否是一个整体词。在这个例子中(假设你使用上面提到的方法检查叶节点)然而,如果“Appl”是一个完整的单词错误地返回错误,因为“l”不是叶节点。添加“endOfWord”标志修复了这个问题。 – MrDatabase 2011-06-14 20:49:33