我正在尝试将类别树转换为平面列表。
在类别中,任何类别都可以有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.
语言不是障碍我只是试图制定循环/嵌套循环来创建这个逻辑以将其转换为扁平列表。
任何帮助都将受到高度赞赏。
先谢谢
答案 0 :(得分:2)
您的平面列表的每个条目都将是您的树的节点,因为根据深度优先搜索访问该节点。有关详细信息,请see here
编辑: 最初的帖子被编辑了几次。最初,看起来OP是在一个平面列表之后,因为那将是BFS的输出,但是在稍后的编辑之后,看起来OP是在平坦列表之后,因为这将是DFS的输出。更一般的情况是“平面列表的每个条目都将是树的节点,因为某些遍历函数(例如BFS或DFS)访问该节点。”
答案 1 :(得分:1)
我不知道你的平面列表是什么意思,但你可以使用堆栈(实现方式,它可以是STL向量)来存储当前进度,同时递归访问子类别。
我上面提到的“当前进度”应该存储您当前正在访问的子类别,以便您在返回时可以继续访问其他子类别。
如果你可以制定一个递归算法,你可以用这种形式重写它。
答案 2 :(得分:0)
您可以使用递归+ std::copy函数轻松完成此操作。