Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class Node:
- def __init__(self, Element):
- self.Element = Element
- self.Left = None
- self.Right = None
- class Tree:
- def __init__(self):
- self.Root = None
- def Insert(self, Element):
- self.Root = self._Insert(self.Root, Element)
- print("Successfully Inserted {} into Tree".format(Element))
- def _Insert(self, Root, Element):
- if Root:
- if Element < Root.Element:
- Root.Left = self._Insert(Root.Left, Element)
- else:
- Root.Right = self._Insert(Root.Right, Element)
- return Root
- else:
- return Node(Element)
- def _GetNumberOfChildren(self, Root):
- if Root.Left and Root.Right:
- return 2
- elif Root.Left or Root.Right:
- return 1
- else:
- return 0
- def Remove(self, Element):
- self.Root = self._Remove(self.Root, Element)
- print("Successfully Removed {} from Tree".format(Element))
- def _Remove(self, Root, Element):
- if Root:
- if Element < Root.Element:
- Root.Left = self._Remove(Root.Left, Element)
- elif Element > Root.Element:
- Root.Right = self._Remove(Root.Right, Element)
- else:
- NumberOfChildren = self._GetNumberOfChildren(Root)
- if NumberOfChildren == 0:
- Root = None
- elif NumberOfChildren == 1:
- Root = (Root.Left, Root.Right)[Root.Right is not None]
- else:
- Temp = Root
- Minimum = self._Minimum(Root.Right)
- Root.Right = self._Remove(Root.Right, Minimum)
- Root.Element = Minimum
- return Root
- def Search(self, Element):
- print(("Failed to Find", "Found")[self._Search(self.Root, Element)] + " Node {}".format(Element))
- def _Search(self, Root, Element):
- if Root:
- if Element < Root.Element:
- return self._Search(Root.Left, Element)
- elif Element > Root.Element:
- return self._Search(Root.Right, Element)
- else:
- return True
- else:
- return False
- def Minimum(self):
- print("Minimum Node: {}".format(self._Minimum(self.Root)))
- def _Minimum(self, Root):
- if Root.Left:
- return self._Minimum(Root.Left)
- return Root.Element
- def Maximum(self):
- print("Maximum Node: {}".format(self._Maximum(self.Root)))
- def _Maximum(self, Root):
- if Root.Right:
- return self._Maximum(Root.Right)
- return Root.Element
Advertisement
Add Comment
Please, Sign In to add comment