Imports System
Module Program
Structure Tree
Dim LeftPointer As Integer
Dim Item As String
Dim RightPointer As Integer
End Structure
Dim myTree(9) As Tree
Dim rootPointer As Integer = -1
Dim FreePointer As Integer = 0
Dim ItemCount As Integer = 0
Function TreeEmpty() As Boolean
If ItemCount = 0 Then
Return True
Else Return False
End If
End Function
Function TreeFull() As Boolean
If ItemCount = 10 Then
Return True
Else Return False
End If
End Function
Function Find(SearchItem As Integer) As Integer
Dim CurrentPosition As Integer = rootPointer
Do While myTree(CurrentPosition).Item <> SearchItem And CurrentPosition <>
-1
If SearchItem < myTree(CurrentPosition).Item Then
CurrentPosition = myTree(CurrentPosition).LeftPointer
Else
CurrentPosition = myTree(CurrentPosition).RightPointer
End If
Loop
Return CurrentPosition
End Function
Sub Insert(Data As Integer)
Dim CurrentPosition As Integer = rootPointer
If TreeFull() Then
Console.WriteLine("Tree is full")
Else
If TreeEmpty() Then
rootPointer = FreePointer
Else
'Update pointer of previous node to point to new branch
Do 'Traversing through the tree to find previous node
If Data < myTree(CurrentPosition).Item Then
If myTree(CurrentPosition).LeftPointer = -1 Then
myTree(CurrentPosition).LeftPointer = FreePointer
End If
CurrentPosition = myTree(CurrentPosition).LeftPointer
Else
If myTree(CurrentPosition).RightPointer = -1 Then
myTree(CurrentPosition).RightPointer = FreePointer
End If
CurrentPosition = myTree(CurrentPosition).RightPointer
End If
Loop Until CurrentPosition = FreePointer
End If
myTree(FreePointer).Item = Data
myTree(FreePointer).LeftPointer = -1
myTree(FreePointer).RightPointer = -1
ItemCount = ItemCount + 1
If ItemCount = 10 Then
FreePointer = -1
Else FreePointer = FreePointer + 1
End If
End If
End Sub
Sub Main()
Call Insert(2)
Call Insert(3)
Call Insert(1)
Console.WriteLine(Find(3))
End Sub
End Module