Guest User

Mikes Basic BST

a guest
Jan 6th, 2018
76
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.72 KB | None | 0 0
  1. class Node:
  2. def __init__(self, Element):
  3. self.Element = Element
  4. self.Left = None
  5. self.Right = None
  6.  
  7. class Tree:
  8. def __init__(self):
  9. self.Root = None
  10.  
  11. def Insert(self, Element):
  12. self.Root = self._Insert(self.Root, Element)
  13. print("Successfully Inserted {} into Tree".format(Element))
  14.  
  15. def _Insert(self, Root, Element):
  16. if Root:
  17. if Element < Root.Element:
  18. Root.Left = self._Insert(Root.Left, Element)
  19. else:
  20. Root.Right = self._Insert(Root.Right, Element)
  21. return Root
  22. else:
  23. return Node(Element)
  24.  
  25. def _GetNumberOfChildren(self, Root):
  26. if Root.Left and Root.Right:
  27. return 2
  28. elif Root.Left or Root.Right:
  29. return 1
  30. else:
  31. return 0
  32.  
  33. def Remove(self, Element):
  34. self.Root = self._Remove(self.Root, Element)
  35. print("Successfully Removed {} from Tree".format(Element))
  36.  
  37. def _Remove(self, Root, Element):
  38. if Root:
  39. if Element < Root.Element:
  40. Root.Left = self._Remove(Root.Left, Element)
  41. elif Element > Root.Element:
  42. Root.Right = self._Remove(Root.Right, Element)
  43. else:
  44. NumberOfChildren = self._GetNumberOfChildren(Root)
  45. if NumberOfChildren == 0:
  46. Root = None
  47. elif NumberOfChildren == 1:
  48. Root = (Root.Left, Root.Right)[Root.Right is not None]
  49. else:
  50. Temp = Root
  51. Minimum = self._Minimum(Root.Right)
  52. Root.Right = self._Remove(Root.Right, Minimum)
  53. Root.Element = Minimum
  54. return Root
  55.  
  56. def Search(self, Element):
  57. print(("Failed to Find", "Found")[self._Search(self.Root, Element)] + " Node {}".format(Element))
  58.  
  59. def _Search(self, Root, Element):
  60. if Root:
  61. if Element < Root.Element:
  62. return self._Search(Root.Left, Element)
  63. elif Element > Root.Element:
  64. return self._Search(Root.Right, Element)
  65. else:
  66. return True
  67. else:
  68. return False
  69.  
  70. def Minimum(self):
  71. print("Minimum Node: {}".format(self._Minimum(self.Root)))
  72.  
  73.  
  74. def _Minimum(self, Root):
  75. if Root.Left:
  76. return self._Minimum(Root.Left)
  77. return Root.Element
  78.  
  79. def Maximum(self):
  80. print("Maximum Node: {}".format(self._Maximum(self.Root)))
  81.  
  82. def _Maximum(self, Root):
  83. if Root.Right:
  84. return self._Maximum(Root.Right)
  85. return Root.Element
Advertisement
Add Comment
Please, Sign In to add comment