Solved

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

Posted on 2011-09-19
6
242 Views
Last Modified: 2012-05-12
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
Comment
Question by:monica73174
  • 3
  • 3
6 Comments
 
LVL 85

Expert Comment

by:Mike Tomlinson
ID: 36564371
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 Comment

by:monica73174
ID: 36564451
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
 
LVL 85

Expert Comment

by:Mike Tomlinson
ID: 36564500
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
How your wiki can always stay up-to-date

Quip doubles as a “living” wiki and a project management tool that evolves with your organization. As you finish projects in Quip, the work remains, easily accessible to all team members, new and old.
- Increase transparency
- Onboard new hires faster
- Access from mobile/offline

 

Author Comment

by:monica73174
ID: 36564517
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
 
LVL 85

Accepted Solution

by:
Mike Tomlinson earned 500 total points
ID: 36564612
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
 

Author Comment

by:monica73174
ID: 36564661
Thank you it looks exactly like what I am trying to do.  
0

Featured Post

Highfive + Dolby Voice = No More Audio Complaints!

Poor audio quality is one of the top reasons people don’t use video conferencing. Get the crispest, clearest audio powered by Dolby Voice in every meeting. Highfive and Dolby Voice deliver the best video conferencing and audio experience for every meeting and every room.

Join & Write a Comment

I think the Typed DataTable and Typed DataSet are very good options when working with data, but I don't like auto-generated code. First, I create an Abstract Class for my DataTables Common Code.  This class Inherits from DataTable. Also, it can …
If you're writing a .NET application to connect to an Access .mdb database and use pre-existing queries that require parameters, you've come to the right place! Let's say the pre-existing query(qryCust) in Access takes a Date as a parameter and l…
Get a first impression of how PRTG looks and learn how it works.   This video is a short introduction to PRTG, as an initial overview or as a quick start for new PRTG users.
This video explains how to create simple products associated to Magento configurable product and offers fast way of their generation with Store Manager for Magento tool.

746 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

12 Experts available now in Live!

Get 1:1 Help Now