Advertisement
Guest User

Mustakims awesome nothing

a guest
Jan 24th, 2018
63
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.33 KB | None | 0 0
  1. Module Module1
  2.  
  3. Const NULLPOINTER = -1
  4. Structure TreeNode
  5. Dim Data As String
  6. Dim LeftPointer, RightPointer As Integer
  7. End Structure
  8.  
  9. Dim Tree(7) As TreeNode
  10. Dim RootPointer As Integer
  11. Dim FreePtr As Integer
  12.  
  13. Sub InitialiseTree()
  14. RootPointer = NULLPOINTER
  15. FreePtr = 0
  16. For Index = 0 To 7
  17. Tree(Index).LeftPointer = Index + 1
  18. Tree(Index).RightPointer = NULLPOINTER
  19. Tree(Index).Data = " "
  20. Next
  21. Tree(7).LeftPointer = NULLPOINTER
  22.  
  23. End Sub
  24.  
  25. Function FindNode(SearchItem) As Integer
  26. Dim ThisNodePtr As Integer
  27. ThisNodePtr = RootPointer
  28. Try
  29. Do While ThisNodePtr <> NULLPOINTER And
  30. Tree(ThisNodePtr).Data <> SearchItem
  31. If Tree(ThisNodePtr).Data > SearchItem Then
  32. ThisNodePtr = Tree(ThisNodePtr).LeftPointer
  33. Else
  34. ThisNodePtr = Tree(ThisNodePtr).RightPointer
  35. End If
  36. Loop
  37. Catch ex As Exception
  38.  
  39. End Try
  40. Return ThisNodePtr
  41. End Function
  42.  
  43. Sub InsertNode(NewItem)
  44. Dim NewNodePtr, ThisNodePtr, PreviousNodePtr As Integer
  45. Dim TurnedLeft As Boolean
  46. If FreePtr <> NULLPOINTER Then
  47. NewNodePtr = FreePtr
  48. Tree(NewNodePtr).Data = NewItem
  49. FreePtr = Tree(FreePtr).LeftPointer
  50. Tree(NewNodePtr).LeftPointer = NULLPOINTER
  51. If RootPointer = NULLPOINTER Then
  52. RootPointer = NewNodePtr
  53. Else
  54. ThisNodePtr = RootPointer
  55. Do While ThisNodePtr <> NULLPOINTER
  56. PreviousNodePtr = ThisNodePtr
  57. If Tree(ThisNodePtr).Data > NewItem Then
  58. TurnedLeft = True
  59. ThisNodePtr = Tree(ThisNodePtr).LeftPointer
  60. Else
  61. TurnedLeft = False
  62. ThisNodePtr = Tree(ThisNodePtr).RightPointer
  63. End If
  64. Loop
  65. If TurnedLeft Then
  66. Tree(PreviousNodePtr).LeftPointer = NewNodePtr
  67. Else
  68. Tree(PreviousNodePtr).RightPointer = NewNodePtr
  69. End If
  70. End If
  71. Else
  72. Console.WriteLine("no space for more data")
  73. End If
  74. End Sub
  75.  
  76. Sub TraverseTree(RootPointer)
  77. If RootPointer <> NULLPOINTER Then
  78. TraverseTree(Tree(RootPointer).LeftPointer)
  79. Console.WriteLine(Tree(RootPointer).Data)
  80. TraverseTree(Tree(RootPointer).RightPointer)
  81. End If
  82. End Sub
  83.  
  84. Function GetOption()
  85. Dim Choice As Char
  86. Console.WriteLine("1: add data")
  87. Console.WriteLine("2: find data")
  88. Console.WriteLine("3: traverse tree")
  89. Console.WriteLine("4: end program")
  90. Console.WriteLine("Enter your choice: ")
  91. Choice = Console.ReadLine
  92. Return (Choice)
  93. End Function
  94.  
  95. Sub Main()
  96. Dim Choice As Char
  97. Dim Data As String
  98. Dim ThisNodePtr As Integer
  99.  
  100. InitialiseTree()
  101. Choice = GetOption()
  102. Do While Choice <> "4"
  103. Select Case Choice
  104. Case "1"
  105. Console.WriteLine("Enter the value: ")
  106. Data = Console.ReadLine()
  107. InsertNode(Data)
  108. TraverseTree(RootPointer)
  109. Case "2"
  110. Console.WriteLine("Enter search value: ")
  111. Data = Console.ReadLine()
  112. ThisNodePtr = FindNode(Data)
  113. If ThisNodePtr = NULLPOINTER Then
  114. Console.WriteLine("Value not found")
  115. Else
  116. Console.WriteLine("value found at: " & ThisNodePtr)
  117. End If
  118. Console.WriteLine(RootPointer & " " & FreePtr)
  119. For i = 0 To 7
  120. Console.WriteLine(i & " " & Tree(i).LeftPointer & " " & Tree(i).Data & " " & Tree(i).RightPointer)
  121. Next
  122. Case "3"
  123. TraverseTree(RootPointer)
  124. End Select
  125. Choice = GetOption()
  126.  
  127. Loop
  128. End Sub
  129.  
  130. End Module
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement