![]() |
1
2
使用以下子项:
你可以用
要获得以下输出: A1 B1 C1 E1 A1 B1 C1 E2 A1 B2 C1 E1 A1 B2 C1 E2 A2 B3 D1 F1 A2 B3 D1 F2 D4 A2 B4 F1 A2 B4 F2 D4 A3 B5 A3 B6 D2 A3 B6 D3
我用过
|
![]() |
2
1
每个节点都应该知道其父节点(getParentRow),这样您就可以将父节点作为参数传递给递归方法。这样,当您到达一个“叶”时,您可以递归地跟踪到根目录。 我不确定它是否是最有效的方法,但我认为它应该给你想要的结果。 |
![]() |
3
1
可以按照以下所需的任意顺序执行树行走。对于根节点,将所有子节点放入数据结构(如下所述)。然后从数据结构中取出一个节点,并将其所有子节点放入数据结构中。继续,直到数据结构为空。 诀窍是选择正确的数据结构。对于顺序(深度优先)遍历,可以使用堆栈。(子项必须按相反的顺序推到堆栈上。)要进行深度优先遍历,可以使用队列。 对于更复杂的订单,优先级队列是票据。只需根据您希望遍历树的顺序,根据您使用的任何条件设置优先级。事实上,正确设置优先级也将表现为堆栈或队列,分别导致前面提到的深度优先顺序和宽度优先顺序。 编辑添加: 树遍历算法对于这种类型的数据结构非常有效,因为它没有循环。只需在数据结构中为集合中的每个项放置一个新节点。我想唯一额外的就是一种表示路径的方法。 这条路很容易走。你只需要这样的东西:
所以我们要做的就是沿着这条路走。与此类似的事情应该会起作用: [删除了不正确的解决方案] 再次编辑: 好吧,我终于知道你想要什么了。在下树之前,你想在每一条小路上横穿不同“孩子类型”的孩子。 这是一个大混乱,但我解决了它:
|
![]() |
4
0
首先我以为你想要所有的树。 http://en.wikipedia.org/wiki/Spanning_tree 但后来我意识到你想要的是从树根开始的“跨越式行走”。 然后我意识到这是(相对)简单的。
当然,您需要一个真正的数据结构,我认为Perl散列的散列不起作用;您需要在每个节点中有一个“父”指针。 |
![]() |
Wizard · 创建特定排列Python 7 年前 |
![]() |
RyanP · JAVA的置换生成器方法分析 7 年前 |
![]() |
stavrop · 如何从项目列表中获得顺序排列? 7 年前 |
![]() |
Askold Ilvento · 在Eigen中应用逆换位 7 年前 |
![]() |
Gabriel · 计算2个向量之间的断点距离 7 年前 |
![]() |
Kuba KrzyżyÅski · 打印置换树python3 7 年前 |