|
|
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散列的散列不起作用;您需要在每个节点中有一个“父”指针。 |
|
|
A B · C#Excel自动调整列避免长文本时出错 1 年前 |
|
|
Megrez7 · C#ToArray转换合并为一行,导致数组元素更改 1 年前 |
|
Aycon · 在工厂方法中释放部分创建的对象的正确方法是什么? 1 年前 |
|
|
Sei · Avalonia/WPF将路由器传递到控制模板 1 年前 |