VB.NET Creating Generic Tree
This tutorial is about how to create Generic Trees in VB.NET.
In this article you will learn how to create Generic Tree in VB.NET.
Imports System.Collections.Generic
Imports System.ComponentModel
Module Module1
Shared Sub Main()
Dim family_tree As New Tree(Of MyNode)
Dim root As TreeNode(Of MyNode) = family_tree.MakeRoot(New MyNode("University"))
Dim child1 As TreeNode(Of MyNode) = root.AddChild(New MyNode("Bachelors Degree Course"))
Dim child2 As TreeNode(Of MyNode) = root.AddChild(New MyNode("Masters Degree Course"))
child1.AddChild(New MyNode("BCA"))
child1.AddChild(New MyNode("BCOM"))
child2.AddChild(New MyNode("MCA"))
child2.AddChild(New MyNode("MCOM"))
Console.WriteLine(family_tree.ToString())
Console.ReadLine()
End Sub
End Class
Public Class MyNode
Public Name As String
Public Sub New(ByVal new_name As String)
Name = new_name
End Sub
Public Overrides Function ToString() As String
Return Name
End Function
End Class
Public Class Tree(Of data_type)
Private m_Root As TreeNode(Of data_type) = Nothing
Public Property Root() As TreeNode(Of data_type)
Get
Return m_Root
End Get
Set(ByVal value As TreeNode(Of data_type))
m_Root = value
End Set
End Property
Public Sub Clear()
m_Root = Nothing
End Sub
Public Function MakeRoot(ByVal node_item As data_type) As TreeNode(Of data_type)
m_Root = New TreeNode(Of data_type)(node_item)
Return m_Root
End Function
Public Overrides Function ToString() As String
Return m_Root.ToString()
End Function
End Class
Public Class TreeNode(Of data_type)
Public NodeObject As data_type
Public Children As New List(Of TreeNode(Of data_type))
Public Sub New(ByVal node_object As data_type)
NodeObject = node_object
End Sub
Public Function AddChild(ByVal node_item As data_type) As TreeNode(Of data_type)
Dim child_node As New TreeNode(Of data_type)(node_item)
Children.Add(child_node)
Return child_node
End Function
Public Shadows Function ToString(Optional ByVal indent As Integer = 0) As String
Dim txt As String
txt = New String(" "c, indent) & NodeObject.ToString & vbCrLf
' Add the children's text.
For Each child As TreeNode(Of data_type) In Children
txt &= child.ToString(indent + 2)
Next child
Return txt
End Function
End Class
End Module
RESULT:
