我是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服务发送到前端。目前,在上面的代码中,当我只使用一个循环时,我只能得到所有的根。但它是一个树形结构,我需要遍历所有这些并相应地将值添加到新树或我可以传递到我的前端的东西。
答案 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
如果你在孩子之前或之后对当前节点进行工作可能很重要。要记住的事情。