希望这不是一个重复的问题。我看了一下,发现了类似的问题,但在这种情况下还不够。 我有许多树视图控件,并可以遍历Nodes递归出于各种原因。 但是,我经常需要遍历节点,就好像它们在列表中一样。 我想创建一个函数,如果可能的话,创建一个来自Nodes集合的Generic.List(of TreeNode)
,而不递归。将Treeview节点收集到列表而不递归
(没有递归纯粹是为了做它没有递归的运动 - 我的理解可能是不可能的)
此功能可以节省很多时间重复使用跨大规模的解决方案,编码人员可以使用简单的For Each
范例遍历节点。
我已经看到了一种技术,使用C#使用LINQ和递归“扁平化”Nodes集合,但我不确定该语法是否可以完全转换为VB.NET。所以如果有任何聪明的VB函数可以模拟这个任务 - 会非常有用。
还有很多类似的问题,并非常翔实的答案在SO,像这样的: Enumerating Collections that are not inherently IEnumerable? ......这凸显使用某种算法非常深的树木堆栈溢出错误。我希望一个不使用递归的方法不会遭受堆栈溢出错误 - 但是,我已经准备好了,它可能会很长,笨拙和缓慢。
我也准备回答'这是不可能做到这一点,没有递归'。不过,我想确认或拒绝使用的功率SO(本论坛)这种说法
你说你已经知道如何通过'TreeView'控制读取找到的所有节点,那么为什么不能你只是建立一个结果列表?目前还不清楚你遇到什么困难。 – 2015-01-26 18:50:09
@StevenDoggart谢谢,是的,我可以遍历并使用递归构建一个List。这个问题应该强调'不递归' - 如果可能的话。 – Grantly 2015-01-26 18:51:26
您希望列表中的项目位于哪个订单中? – 2015-01-26 19:06:32