如何遍历vb.net中的多树

时间:2016-08-03 20:06:51

标签: vb.net

我是VB.Net的新手,我遇到了一个问题。我有一棵多树。 Root有很多孩子,甚至那些孩子也有很多孩子。我想使用递归遍历多树。我在网上找不到太多信息。有人能帮我吗?谢谢!

以下是我想要实现的目标:

我需要通过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 拥有所有root,然后分支到子节点。我只需要一些值,显然我需要遍历才能获得这些值。获得这些值后,我需要将它们作为REST服务发送到前端。目前,在上面的代码中,当我只使用一个循环时,我只能得到所有的根。但它是一个树形结构,我需要遍历所有这些并相应地将值添加到新树或我可以传递到我的前端的东西。

1 个答案:

答案 0 :(得分: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

如果你在孩子之前或之后对当前节点进行工作可能很重要。要记住的事情。