Advertisement
nein_yards

PM Task 2 2021 beta v1.0

Jan 9th, 2021
108
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.85 KB | None | 0 0
  1. Structure treeNode
  2. Public data As String
  3. Public left As Integer
  4. Public right As Integer
  5. End Structure
  6. ReadOnly nullPtr As Integer = -1
  7. Class ColorTree
  8. Dim head As Integer
  9. Dim freeNodePtr As Integer
  10. Dim tree() As treeNode
  11. Sub New(maxIndex As Integer)
  12. ReDim tree(maxIndex)
  13. head = -1
  14. freeNodePtr = 0
  15. For i = 0 To maxIndex
  16. tree(i).left = i + 1
  17. tree(i).right = nullPtr
  18. Next
  19. tree(maxIndex).left = nullPtr
  20. End Sub
  21. Sub addColor(color As String)
  22. If freeNodePtr = -1 Then
  23. Console.WriteLine("Error: Color tree is full!")
  24. Exit Sub
  25. End If
  26. Dim newNodePtr = freeNodePtr
  27. freeNodePtr = tree(freeNodePtr).left
  28.  
  29. tree(newNodePtr).data = color
  30. tree(newNodePtr).left = nullPtr
  31. tree(newNodePtr).right = nullPtr
  32.  
  33. Dim prevNodePtr, currNodePtr As Integer
  34. Dim turnedLeft As Boolean
  35. currNodePtr = head
  36. While currNodePtr <> nullPtr
  37. prevNodePtr = currNodePtr
  38. If color < tree(currNodePtr).data Then
  39. currNodePtr = tree(currNodePtr).left
  40. turnedLeft = True
  41. Else
  42. currNodePtr = tree(currNodePtr).right
  43. turnedLeft = False
  44. End If
  45. End While
  46. If head = nullPtr Then
  47. head = newNodePtr
  48. Else
  49. If turnedLeft Then
  50. tree(prevNodePtr).left = newNodePtr
  51. Else
  52. tree(prevNodePtr).right = newNodePtr
  53. End If
  54. End If
  55.  
  56. End Sub
  57.  
  58. End Class
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement