用下面Trie树结构:递归 - >迭代
struct Trie{
char letter;
bool eow;
Trie *letters[26];
};
我使用以下代码来提取一个线索字转换为按字母顺序的载体。
void getWords(const TrieNode& data, vector<string> &words, string acc)
{
if (data.eow)
words.push_back(acc);
for (int i = 0; i < 26; i++) {
if (data.letters[i] != NULL)
getWords(*(data.letters[i]), words, acc + data.letters[i]->letter);
}
}
我只是想知道是否有一种方法来做到这一点没有递归,只使用迭代?我试图通过迭代来实现这一点,但不能想到使用循环来检查trie中每个图层的每个字母的方法。有什么建议么?
如果问题真的只是“有没有办法做到这一点没有递归?”当然是的。如果你问“我该怎么做?”那么简短的答案就是使用堆栈。 –
你可以添加语言标签吗?例如[tag:c]或[tag:C++] – Bohemian
您至少可以发布一个希望编译的结构定义。 – Puppy