• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 262
  • Last Modified:

how do you create a tree with more than 2 nodes in VB.NET

I need to create a tree that has 5 nodes per parent that goes down 10 levels deep.  I have seen a ton of examples for binary trees but nothing for greater than 2.  
0
monica73174
Asked:
monica73174
  • 3
  • 3
1 Solution
 
Mike TomlinsonMiddle School Assistant TeacherCommented:
Just create a List within the Node that holds all the child Nodes:

    Public Class MyTreeNode
        Public SomeValue As String
        Public Children As New List(Of MyTreeNode)
    End Class

Now it can hold as many children as you like...
0
 
monica73174Author Commented:
I am having trouble figuring out how I move from each node at each level to set the children.

For example the first level has the root and that is the parent but then the next level has 5 nodes and I need to move to each node to set the children of those nodes.  how do I track the parent of each group of children?
0
 
Mike TomlinsonMiddle School Assistant TeacherCommented:
Where is your data coming from?

>> "how do I track the parent of each group of children?"

You keep a reference to it...

Here is an example:  A --> B --> C

    Dim root As New MyTreeNode
    root.SomeValue = "A"

    Dim child1 As New MyTreeNode
    child1.SomeValue = "B"

    Dim child2 As New MyTreeNode
    child2.SomeValue = "C"

    root.Children.Add(child1)
    child1.Children.Add(child2)
0
What does it mean to be "Always On"?

Is your cloud always on? With an Always On cloud you won't have to worry about downtime for maintenance or software application code updates, ensuring that your bottom line isn't affected.

 
monica73174Author Commented:
Basically my tree will be the same five actions repeated over and over.

This is a small sample of what it should look like.

                          Initial state - root
action1 - action2 - action3 - action4 - action5  --

then these five nodes will be repeated under each of these nodes as children and so on up to 10 levels.  .
0
 
Mike TomlinsonMiddle School Assistant TeacherCommented:
Here's a new MyTreeNode:
Public Class MyTreeNode

    Public Sub New(ByVal Value As String)
        SomeValue = Value
    End Sub

    Public SomeValue As String

    Public Children As New List(Of MyTreeNode)

    Public Shared Sub Print(ByVal root As MyTreeNode)
        Debug.Print(root.SomeValue)
        For Each child As MyTreeNode In root.Children
            MyTreeNode.Print(child, 1)
        Next
    End Sub

    Private Shared Sub Print(ByVal node As MyTreeNode, ByVal Level As Integer)
        Debug.Print(New String(Chr(9), Level) & node.SomeValue)
        For Each child As MyTreeNode In node.Children
            MyTreeNode.Print(child, Level + 1)
        Next
    End Sub

End Class

Open in new window


To be used in this example:
Public Class Form1

    Private Root As MyTreeNode

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        ' Example:
        CreateTree(3, 5) ' 3 actions, 5 levels deep
    End Sub

    Public Sub CreateTree(ByVal NumActions As Integer, ByVal NumLevels As Integer)
        Root = New MyTreeNode("Root")
        CreateNodes(Root, NumActions, NumLevels, 1)
    End Sub

    Private Sub CreateNodes(ByVal parent As MyTreeNode, ByVal NumActions As Integer, ByVal NumLevels As Integer, ByVal CurLevel As Integer)
        For i As Integer = 1 To NumActions
            Dim mtn As New MyTreeNode("Action" & i)
            parent.Children.Add(mtn)
        Next
        If CurLevel < NumLevels Then
            For Each child As MyTreeNode In parent.Children
                CreateNodes(child, NumActions, NumLevels, CurLevel + 1)
            Next
        End If
    End Sub

    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        MyTreeNode.Print(Me.Root)
    End Sub

End Class

Open in new window



Which produced this Output:  
Root
	Action1
		Action1
			Action1
				Action1
					Action1
					Action2
					Action3
				Action2
					Action1
					Action2
					Action3
				Action3
					Action1
					Action2
					Action3
			Action2
				Action1
					Action1
					Action2
					Action3
				Action2
					Action1
					Action2
					Action3
				Action3
					Action1
					Action2
					Action3
			Action3
				Action1
					Action1
					Action2
					Action3
				Action2
					Action1
					Action2
					Action3
				Action3
					Action1
					Action2
					Action3
		Action2
			Action1
				Action1
					Action1
					Action2
					Action3
				Action2
					Action1
					Action2
					Action3
				Action3
					Action1
					Action2
					Action3
			Action2
				Action1
					Action1
					Action2
					Action3
				Action2
					Action1
					Action2
					Action3
				Action3
					Action1
					Action2
					Action3
			Action3
				Action1
					Action1
					Action2
					Action3
				Action2
					Action1
					Action2
					Action3
				Action3
					Action1
					Action2
					Action3
		Action3
			Action1
				Action1
					Action1
					Action2
					Action3
				Action2
					Action1
					Action2
					Action3
				Action3
					Action1
					Action2
					Action3
			Action2
				Action1
					Action1
					Action2
					Action3
				Action2
					Action1
					Action2
					Action3
				Action3
					Action1
					Action2
					Action3
			Action3
				Action1
					Action1
					Action2
					Action3
				Action2
					Action1
					Action2
					Action3
				Action3
					Action1
					Action2
					Action3
	Action2
		Action1
			Action1
				Action1
					Action1
					Action2
					Action3
				Action2
					Action1
					Action2
					Action3
				Action3
					Action1
					Action2
					Action3
			Action2
				Action1
					Action1
					Action2
					Action3
				Action2
					Action1
					Action2
					Action3
				Action3
					Action1
					Action2
					Action3
			Action3
				Action1
					Action1
					Action2
					Action3
				Action2
					Action1
					Action2
					Action3
				Action3
					Action1
					Action2
					Action3
		Action2
			Action1
				Action1
					Action1
					Action2
					Action3
				Action2
					Action1
					Action2
					Action3
				Action3
					Action1
					Action2
					Action3
			Action2
				Action1
					Action1
					Action2
					Action3
				Action2
					Action1
					Action2
					Action3
				Action3
					Action1
					Action2
					Action3
			Action3
				Action1
					Action1
					Action2
					Action3
				Action2
					Action1
					Action2
					Action3
				Action3
					Action1
					Action2
					Action3
		Action3
			Action1
				Action1
					Action1
					Action2
					Action3
				Action2
					Action1
					Action2
					Action3
				Action3
					Action1
					Action2
					Action3
			Action2
				Action1
					Action1
					Action2
					Action3
				Action2
					Action1
					Action2
					Action3
				Action3
					Action1
					Action2
					Action3
			Action3
				Action1
					Action1
					Action2
					Action3
				Action2
					Action1
					Action2
					Action3
				Action3
					Action1
					Action2
					Action3
	Action3
		Action1
			Action1
				Action1
					Action1
					Action2
					Action3
				Action2
					Action1
					Action2
					Action3
				Action3
					Action1
					Action2
					Action3
			Action2
				Action1
					Action1
					Action2
					Action3
				Action2
					Action1
					Action2
					Action3
				Action3
					Action1
					Action2
					Action3
			Action3
				Action1
					Action1
					Action2
					Action3
				Action2
					Action1
					Action2
					Action3
				Action3
					Action1
					Action2
					Action3
		Action2
			Action1
				Action1
					Action1
					Action2
					Action3
				Action2
					Action1
					Action2
					Action3
				Action3
					Action1
					Action2
					Action3
			Action2
				Action1
					Action1
					Action2
					Action3
				Action2
					Action1
					Action2
					Action3
				Action3
					Action1
					Action2
					Action3
			Action3
				Action1
					Action1
					Action2
					Action3
				Action2
					Action1
					Action2
					Action3
				Action3
					Action1
					Action2
					Action3
		Action3
			Action1
				Action1
					Action1
					Action2
					Action3
				Action2
					Action1
					Action2
					Action3
				Action3
					Action1
					Action2
					Action3
			Action2
				Action1
					Action1
					Action2
					Action3
				Action2
					Action1
					Action2
					Action3
				Action3
					Action1
					Action2
					Action3
			Action3
				Action1
					Action1
					Action2
					Action3
				Action2
					Action1
					Action2
					Action3
				Action3
					Action1
					Action2
					Action3

Open in new window

0
 
monica73174Author Commented:
Thank you it looks exactly like what I am trying to do.  
0

Featured Post

Concerto Cloud for Software Providers & ISVs

Can Concerto Cloud Services help you focus on evolving your application offerings, while delivering the best cloud experience to your customers? From DevOps to revenue models and customer support, the answer is yes!

Learn how Concerto can help you.

  • 3
  • 3
Tackle projects and never again get stuck behind a technical roadblock.
Join Now