0

カテゴリツリーをフラットリストに変換しようとしています。

カテゴリでは、どのカテゴリにもnレベルのサブカテゴリを含めることができます。

For Ex.:

Category1
-SubCategory1
-SubCategory2
--SubCategor1
---SubCategory1
---SubCategory2
----SubCategory1
----SubCategory2
---SubCategory3
--SubCategory2
-SubCategory3

Category2
-SubCategory1
--SubCategory1
---SubCategory1
----SubCategory1
---SubCategory3
-SubCategory3

...etc and so on.

言語は障壁ではありません私はループ/ネストされたループを定式化してこのロジックを作成し、フラット化されたリストに変換しようとしています。

どんな助けでも大歓迎です。

前もって感謝します

4

3 に答える 3

2

フラットリストへの各エントリは、深さ優先探索に従ってアクセスされるツリーのノードになります。詳細については、こちらをご覧ください

編集:元の投稿は数回編集されました。最初は、OPはBFSの出力であるためフラットリストの後にあるように見えましたが、後で編集した後、OPはDFSの出力であるためフラットリストの後にあるように見えました。より一般的なケースは、「フラットリストへの各エントリは、トラバーサル関数(BFSやDFSなど)がアクセスするツリーのノードになります」というものです。

于 2012-05-30T11:31:07.513 に答える
1

フラットリストの意味はわかりませんが、スタックを使用して(実装に関しては、STLベクトルにすることができます)、サブカテゴリに再帰的にアクセスしながら現在の進行状況を保存できます。

上記の「現在の進捗状況」には、現在アクセスしているサブカテゴリを保存して、戻ったときに他のサブカテゴリに引き続きアクセスできるようにする必要があります。

再帰的アルゴリズムを定式化できる場合は、この形式で書き直すことができます。

于 2012-05-30T11:30:40.067 に答える
0

これは、recursion + std::copy関数を使用して簡単に作成できます。

于 2012-05-30T11:48:02.937 に答える