Public Class MainClass Public Shared Sub Main() Dim tree As Tree = New Tree() Dim insertValue As Integer Dim i As Integer
Dim randomNumber As Random = New Random()
For i = 1 To 10
insertValue = randomNumber.Next(100)
Console.Write(insertValue & " ")
tree.InsertNode(insertValue)
Next
Public Class TreeNode Private mLeftNode As TreeNode Private mData As Integer Private mRightNode As TreeNode
Public Sub New(ByVal nodeData As Integer)
mData = nodeData
mRightNode = Nothing
LeftNode = Nothing End Sub
Public Property LeftNode() As TreeNode
Get
Return mLeftNode End Get
Set(ByVal value As TreeNode)
mLeftNode = value End Set
End Property
Public Property Data() As Integer
Get
Return mData End Get
Set(ByVal value As Integer)
mData = value End Set
End Property
Public Property RightNode() As TreeNode
Get
Return mRightNode End Get
Set(ByVal value As TreeNode)
mRightNode = value End Set
End Property
Public Sub Insert(ByVal insertValue As Integer) If insertValue < mData Then If mLeftNode Is Nothing Then
LeftNode = New TreeNode(insertValue)
Else
LeftNode.Insert(insertValue) End If
ElseIf insertValue > mData Then If RightNode Is Nothing Then
RightNode = New TreeNode(insertValue)
Else
RightNode.Insert(insertValue) End If
End If
End Sub
End Class
Public Class Tree Private root As TreeNode
Public Sub New()
root = Nothing End Sub ' New
Public Sub InsertNode(ByVal insertValue As Integer)
SyncLock (Me) If root Is Nothing Then
root = New TreeNode(insertValue)
Else
root.Insert(insertValue) End If End SyncLock End Sub
Public Sub PreorderTraversal()
SyncLock (Me)
PreorderHelper(root) End SyncLock
End Sub
Private Sub PreorderHelper(ByVal node As TreeNode) If node Is Nothing Then
Return End If
Console.Write(node.Data & " ")
PreorderHelper(node.LeftNode)
PreorderHelper(node.RightNode)
End Sub
Public Sub InorderTraversal()
SyncLock (Me)
InorderHelper(root) End SyncLock
End Sub
Private Sub InorderHelper(ByVal node As TreeNode)
If node Is Nothing Then
Return End If
InorderHelper(node.LeftNode)
Console.Write(node.Data & " ")
InorderHelper(node.RightNode)
End Sub
Public Sub PostorderTraversal()
SyncLock (Me)
PostorderHelper(root) End SyncLock
End Sub
Private Sub PostorderHelper(ByVal node As TreeNode)