トライのイテレータを実装する必要があります。私が持っているとしましょう
a
/\
b c
/\
d e
現在のiterator.state="abd"の場合、iterator.next.state = "abe"、次に"ac"が必要です。各レベルで、ノードは辞書式順序でソートされます(たとえば、レベル2では、c
後に続きb
ます)。また、これはlog(n)時間で発生するはずです。ここで、nはノードの数です。
私が考えることができる1つの解決策は、各ブランチの高さが同じである特殊なケースを検討することです。私が思うに、かなりクールな実装は、「レベル」ごとにバランスの取れたツリーを維持することです。「abdの後に続く文字列」を尋ねると、bに配置すると、3番目のレベルに関連付けられたツリーで「b」よりも大きい最初の要素を検索して「abe」を指定できます。
ただし、ツリーを作成する必要があるため、これは実用的ではない可能性があります。