我正在尝试将所有单词放在字符串中的 trie 中,单词由eow
trie 数据结构中某个字符的字段为真表示,因此 trie 可以有字母而不是导致没有单词,例如“abc”在 trie 中,但“c”的 eow 字段为假,因此“abc”不是单词
这是我的数据结构
struct Trie {
bool eow; //when a Trie field isWord = true, hence there is a word
char letter;
Trie *letters[27];
};
这是我尝试的 print-all 函数,基本上是试图返回一个字符串中的所有单词,单词之间用空格分隔
string printAll( string word, Trie& data)
{
if (data.eow == 1)
return word + " ";
for (int i = 0; i < 26; i++) {
if (data.letters[i] != NULL)
printAll( word + data.letters[i]->letter, *(data.letters[i]));
}
return "";
}
它没有输出我想要的东西,有什么建议吗?