| 6 | self.v = val |
| 7 | #class made for tree |
| 8 | class Tree: |
| 9 | def __init__(self): |
| 10 | self.root = None |
| 11 | |
| 12 | def getRoot(self): |
| 13 | return self.root |
| 14 | |
| 15 | #to add a new node in tree |
| 16 | def add(self, val): |
| 17 | if self.root is None: |
| 18 | self.root = Node(val) |
| 19 | else: |
| 20 | self._add(val, self.root) |
| 21 | |
| 22 | # to add elemnts in tree |
| 23 | def _add(self, val, node): |
| 24 | if val < node.v: |
| 25 | if node.l is not None: |
| 26 | self._add(val, node.l) |
| 27 | else: |
| 28 | node.l = Node(val) |
| 29 | else: |
| 30 | if node.r is not None: |
| 31 | self._add(val, node.r) |
| 32 | else: |
| 33 | node.r = Node(val) |
| 34 | #to find an element if present in root node in tree |
| 35 | def find(self, val): |
| 36 | if self.root is not None: |
| 37 | return self._find(val, self.root) |
| 38 | else: |
| 39 | return None |
| 40 | # to find any element in tree |
| 41 | def _find(self, val, node): |
| 42 | if val == node.v: |
| 43 | return node |
| 44 | elif (val < node.v and node.l is not None): |
| 45 | return self._find(val, node.l) |
| 46 | elif (val > node.v and node.r is not None): |
| 47 | return self._find(val, node.r) |
| 48 | |
| 49 | def deleteTree(self): |
| 50 | # garbage collector will do this for us. |
| 51 | self.root = None |
| 52 | |
| 53 | #to print the tree |
| 54 | def printTree(self): |
| 55 | if self.root is not None: |
| 56 | self._printTree(self.root) |
| 57 | |
| 58 | def _printTree(self, node): |
| 59 | if node is not None: |
| 60 | self._printTree(node.l) |
| 61 | print(str(node.v) + ' ') |
| 62 | self._printTree(node.r) |
| 63 | |
| 64 | tree = Tree() |
| 65 | tree.add(3) |