2016-08-03 3 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로 분기됩니다 dren. 나는 그 중 일부 값만을 필요로하고 분명히이 값을 얻기 위해 트래버스해야합니다. 이러한 값을 얻은 후에는 REST 서비스로 프런트 엔드에 전송해야합니다. 현재 위의 코드에서 루프를 하나만 사용할 때만 모든 루트를 얻을 수있었습니다. 그러나 나무의 strcuture와 나는 그것을 모두 통과해야하며, 그에 상응하여 값을 새로운 나무 나 내가 프론트 엔드에 전달할 수있는 것에 추가해야합니다.

+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가 제공 한 메소드는 현재 노드 _에있는 모든 자식을 반복하고, 그 메소드 각각을 해당 자식 _에서 다시 호출합니다. 따라서 더 이상 존재하지 않을 때까지 모든 어린이와 그 자녀들에게 똑같이 할 것입니다. –

관련 문제