我已經實現了基本前綴樹或「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