2016-08-03 5 views
0

私はVB.Netを初めて使用しています。私は1つの問題で立ち往生しています。私は複数の木を持っています。根は多くの子供を持っていて、それらの子どもさえも多くの他の子供がいます。再帰を使用してマルチツリーを横断したい。私は多くの情報をオンラインで見つけることができませんでした。誰か助けてくれますか?ありがとう!以下は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サービスとしてフロントエンドに送信する必要があります。現在、上記のコードでは、ループを1つしか使用しないとすべてのルーツを取得できませんでした。しかし、それは木の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が提供したメソッドは、現在のノード_内のすべての子を反復処理し、次にそれらの子のそれぞれでメソッドを呼び出します。それで、それがなくなるまで、すべての子供とその子供たちに同じことをします。 –

関連する問題