次の 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);
}
}
再帰せずに反復のみを使用してこれを行う方法があるかどうか疑問に思っていましたか? これを反復のみで実装しようとしていますが、ループを使用して、トライ内の各レイヤーのすべての文字をチェックする方法が思いつきません。助言がありますか?