Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/142.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 类别树到平面列表的转换算法_Javascript_C++_Algorithm_Logic - Fatal编程技术网

Javascript 类别树到平面列表的转换算法

Javascript 类别树到平面列表的转换算法,javascript,c++,algorithm,logic,Javascript,C++,Algorithm,Logic,我正在尝试将类别树转换为平面列表 在类别中,任何类别都可以有n个级别的子类别 For Ex.: Category1 -SubCategory1 -SubCategory2 --SubCategor1 ---SubCategory1 ---SubCategory2 ----SubCategory1 ----SubCategory2 ---SubCategory3 --SubCategory2 -SubCategory3 Category2 -SubCategory1 --SubCategory

我正在尝试将类别树转换为平面列表

在类别中,任何类别都可以有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.
语言不是一个障碍,我只是尝试制定循环/嵌套循环,以创建此逻辑,将其转换为扁平列表

我们将非常感谢您的帮助


提前感谢

我不知道您所说的平面列表是什么意思,但您可以使用堆栈(实现方面,它可以是STL向量)来存储当前进度,同时递归访问子类别

For Ex.:

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

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

...etc and so on.
我上面提到的“当前进度”应该存储您当前访问的子类别,以便在返回时可以继续访问其他子类别


如果你能制定一个递归算法,你可以用这种形式重写它。

我不知道你所说的平面列表是什么意思,但你可以使用堆栈(实现方面,它可以是STL向量)来存储当前进度,同时递归地访问子类别

For Ex.:

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

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

...etc and so on.
我上面提到的“当前进度”应该存储您当前访问的子类别,以便在返回时可以继续访问其他子类别


如果你能制定一个递归算法,你可以用这种形式重写它。

平面列表中的每个条目都将是树的一个节点,因为它是根据深度优先搜索访问的。欲了解更多信息,请

编辑:
原来的帖子被编辑了好几次。起初,OP看起来像是在一个平面列表之后,因为这将是BFS的输出,但在以后的编辑之后,OP看起来像是在一个平面列表之后,因为这将是DFS的输出。更一般的情况是,“平面列表的每个条目都是树的一个节点,因为某些遍历函数(如BFS或DFS)访问了该节点。”

平面列表的每个条目都是树的一个节点,因为它是根据深度优先搜索访问的。欲了解更多信息,请

编辑:
原来的帖子被编辑了好几次。起初,OP看起来像是在一个平面列表之后,因为这将是BFS的输出,但在以后的编辑之后,OP看起来像是在一个平面列表之后,因为这将是DFS的输出。更一般的情况是“平面列表的每个条目都是树的一个节点,因为它被一些遍历函数(如BFS或DFS)访问。”

您可以使用递归+函数轻松实现这一点

您可以使用递归+函数轻松实现这一点

当层数过多时,递归可能导致堆栈溢出。已知级别数时可以接受。当级别数过多时,递归可能导致堆栈溢出。如果知道级别的数量,这是可以接受的。谢谢,平面列表我指的是一个普通列表谢谢,平面列表我指的是一个普通列表谢谢,DFS似乎是我想要做的。但它看起来只适用于二叉树结构,但我正在寻找一种解决方案,当一棵树在任何阶段都可以有n个分支时。DFS和BFS将遍历具有任意数量分支的节点的树。请注意“对于所有边e in G”部分。谢谢。DFS似乎是我想要做的。但它看起来只适用于二叉树结构,但我正在寻找一种解决方案,当一棵树在任何阶段都可以有n个分支时。DFS和BFS将遍历具有任意数量分支的节点的树。请注意“适用于所有边缘”部分。