特定のフォルダー内のすべてのファイルとフォルダーの幅優先走査を実行するイテレーターを作成しようとしています。私はすでに深さ優先トラバーサルでこれを実行しました。これは、たとえば次のように戻ります。
\A
\A\1
\A\1\x
\A\1\y
\A\2
\B
\B\1
等
今、私は代わりに幅優先で結果を返すプログラムを作ろうとしています:(またはレベルごとに)
\A
\B
\A\1
\A\2
\B\1
\A\1\x
\A\1\y
同じ階層に対して。しかし、私はつまずきに遭遇しました。これらを正しい順序で(具体的には逆の順序ではなく)実行したい場合、最終的にO(n)メモリを必要とせずにこのアクションを実行する方法を見つけることができません。nは、ドライブ上のファイル/フォルダーの数です。これは、ある時点でドライブ階層全体をメモリに保持する必要があるように思われるためです。一方、DFSの場合、以前に列挙したすべてのエントリを完全に無視できます。階層内の同じレベル。
だから私の質問は:フォルダをトラバースするためにメモリを使用するための線形よりも優れた方法はありますか?