• Status: Solved
• Priority: Medium
• Security: Public
• Views: 265

# 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
• 3
• 3
1 Solution

Middle 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

Author 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

Middle 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"

0

Author 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

Middle 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
``````

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)
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
``````

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
``````
0

Author Commented:
Thank you it looks exactly like what I am trying to do.
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.