| 2 | |
| 3 | # Class of tree |
| 4 | class Tree: |
| 5 | def __init__(self): |
| 6 | self.root = None |
| 7 | |
| 8 | # Method to obtain the data |
| 9 | def getRoot(self): |
| 10 | return self.root |
| 11 | |
| 12 | # Method to add the data |
| 13 | def add(self, data): |
| 14 | if self.root is None: |
| 15 | self.root = Node(data) |
| 16 | else: |
| 17 | self._add(data, self.root) |
| 18 | |
| 19 | def _add(self, data, node): |
| 20 | if data < node.data: |
| 21 | if node.left is not None: |
| 22 | self._add(data, node.left) |
| 23 | else: |
| 24 | node.left = Node(data) |
| 25 | else: |
| 26 | if node.right is not None: |
| 27 | self._add(data, node.right) |
| 28 | else: |
| 29 | node.right = Node(data) |
| 30 | |
| 31 | # Method for find the data |
| 32 | def find(self, data): |
| 33 | if self.root is not None: |
| 34 | return self._find(data, self.root) |
| 35 | else: |
| 36 | return None |
| 37 | |
| 38 | def _find(self, data, node): |
| 39 | if data == node.data: |
| 40 | return node |
| 41 | elif (data < node.data and node.left is not None): |
| 42 | return self._find(data, node.left) |
| 43 | elif (data > node.data and node.right is not None): |
| 44 | return self._find(data, node.right) |
| 45 | |
| 46 | # Method for delete tree |
| 47 | def deleteTree(self): |
| 48 | self.root = None |
| 49 | |
| 50 | # Method for print tree in terminal |
| 51 | def printTree(self): |
| 52 | if self.root is not None: |
| 53 | self._printTree(self.root) |
| 54 | |
| 55 | def _printTree(self, node): |
| 56 | if node is not None: |
| 57 | self._printTree(node.left) |
| 58 | print(str(node.data) + ' ') |
| 59 | self._printTree(node.right) |
| 60 | |