From 2f54808dffb25e4c47cba08f01853056639f9dcb Mon Sep 17 00:00:00 2001 From: Harsimar Singh Date: Sat, 28 Oct 2017 01:26:34 +0530 Subject: [PATCH] binarytree.py --- PYTHON/binarytree.py | 75 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 75 insertions(+) create mode 100644 PYTHON/binarytree.py diff --git a/PYTHON/binarytree.py b/PYTHON/binarytree.py new file mode 100644 index 0000000..8da03a4 --- /dev/null +++ b/PYTHON/binarytree.py @@ -0,0 +1,75 @@ +#!/usr/bin/python + +class Node: + def __init__(self, val): + self.l = None + self.r = None + self.v = val + +class Tree: + def __init__(self): + self.root = None + + def getRoot(self): + return self.root + + def add(self, val): + if(self.root == None): + self.root = Node(val) + else: + self._add(val, self.root) + + def _add(self, val, node): + if(val < node.v): + if(node.l != None): + self._add(val, node.l) + else: + node.l = Node(val) + else: + if(node.r != None): + self._add(val, node.r) + else: + node.r = Node(val) + + def find(self, val): + if(self.root != None): + return self._find(val, self.root) + else: + return None + + def _find(self, val, node): + if(val == node.v): + return node + elif(val < node.v and node.l != None): + self._find(val, node.l) + elif(val > node.v and node.r != None): + self._find(val, node.r) + + def deleteTree(self): + # garbage collector will do this for us. + self.root = None + + def printTree(self): + if(self.root != None): + self._printTree(self.root) + + def _printTree(self, node): + if(node != None): + self._printTree(node.l) + print str(node.v) + ' ' + self._printTree(node.r) + +# 3 +# 0 4 +# 2 8 +tree = Tree() +tree.add(3) +tree.add(4) +tree.add(0) +tree.add(8) +tree.add(2) +tree.printTree() +print (tree.find(3)).v +print tree.find(10) +tree.deleteTree() +tree.printTree()