2016-08-03 38 views
0

我是VB.Net的新手,我陷入了一个问题。我有一棵多树。根有许多孩子,甚至这些孩子也有许多其他孩子。我想用递归遍历多树。我无法在网上找到很多信息。有人能帮我吗?谢谢!如何遍历vb.net中的多树

下面是我想达到的目标:

我的目标,我需要通过REST派:

Imports Microsoft.VisualBasic 

<DataContract> 
Public Class DropdownObj 

    <DataMember(Name:="name")> 
    Private dropdownData As String 
    Public Property name() As String 
     Get 
      Return dropdownData 
     End Get 
     Set(ByVal value As String) 
      dropdownData = value 
     End Set 
    End Property 

    <DataMember(Name:="id")> 
    Private _id As Integer 
    Public Property id() As Integer 
     Get 
      Return _id 
     End Get 
     Set(ByVal value As Integer) 
      _id = value 
     End Set 
    End Property 

End Class 

实际REST:

tmpGroups = SMS_Logic.Group.LoadGroupsForCombo(_currentUser.dsDir().Group, _currentUser.dsDir().Group_Group, _currentUser.dsDir().Location) 

    Dim x As Integer 
    x = tmpGroups.Count() 
    Dim temp As New List(Of DropdownObj) 
    For objCount As Integer = 0 To tmpGroups.Count - 1 
     Dim xobj As New DropdownObj 
     xobj.name = tmpGroups(objCount).Description 
     xobj.id = tmpGroups(objCount).GroupID 
     temp.Add(xobj) 
     Console.WriteLine(tmpGroups(0).Description) 
    Next 
    Return temp 
End Function 

所以tmpGroups拥有所有的根,然后分支出chil德伦。我只需要一些值,显然我需要遍历才能获得这些值。获取这些值后,我需要将它们作为REST服务发送到前端。目前,在上面的代码中,当我只使用一个循环时,我只能得到所有的根。但它的一个树结构,我需要遍历所有这些,并相应地将值添加到新的树或我可以传递给我的前端的东西。

+0

请告诉我们你已经做了什么来尝试解决问题。 – DVK

+0

我已经添加了一些我想要实现的代码片段。 – Unbreakable

回答

2

你应该自己做一些事情,但是无论如何它都是。 我这样说是因为每当我学习一种新语言时,递归可能是我尝试实现的第一件事情,当我完成它时它是令人兴奋和鼓舞的。

Private Shared Sub HandleNode(ByVal node As Object) 
    'Do the work on the node before child-nodes. 

    For Each child As Object In node.Children 
     HandleNode(child) 
    Next 

    'Do the work on the node after child-nodes. 
End Sub 

如果您在孩子之前或之后在当前节点上工作,这可能很重要。要记住的事情。

+0

我已经添加了我的代码段。你能看一下吗,非常感谢! – Unbreakable

+0

它也会迭代多个树?我的意思是如果一个根有许多孩子。甚至这些孩子也有很多孩子。请指导。 – Unbreakable

+0

@ Unbreakable:会的。 RoyalPotato提供的方法遍历当前node_中的每个子节点,然后再对每个children_调用该方法。所以每个孩子和孩子都会这样做,直到没有更多的孩子。 –