【发布时间】:2012-10-17 16:54:09
【问题描述】:
使用以下 Trie 结构:
struct Trie{
char letter;
bool eow;
Trie *letters[26];
};
我正在使用以下代码按字母顺序将单词从 trie 提取到向量中。
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);
}
}
我只是想知道是否有一种方法可以不使用递归而只使用迭代?我正在尝试仅通过迭代来实现这一点,但想不出一种方法来检查树中每一层的每个字母,使用循环。有什么建议吗?
【问题讨论】:
-
如果问题真的只是“有没有办法在不递归的情况下做到这一点?”那么是的,当然。如果你问“我该怎么做?”那么简短的回答是使用堆栈。
-
您至少可以发布一个希望编译的结构定义。
-
抱歉,编辑了问题
标签: c++ algorithm recursion iteration