From b8708903a1ee5dc5ab2cf2331ee1f851af5ebf38 Mon Sep 17 00:00:00 2001 From: estheticode Date: Sun, 11 Apr 2021 21:56:51 +0530 Subject: [PATCH] fixed binary_search_tree --- data_structures/bst/binary_search_tree.py | 38 +++++++++++++---------- 1 file changed, 22 insertions(+), 16 deletions(-) diff --git a/data_structures/bst/binary_search_tree.py b/data_structures/bst/binary_search_tree.py index 54f29064..87ed5463 100644 --- a/data_structures/bst/binary_search_tree.py +++ b/data_structures/bst/binary_search_tree.py @@ -8,31 +8,37 @@ def __init__(self, val): class BST(): - def __init__(self): - self.root = Node(None) + def __init__(self,root=None): + self.root = root - def insert(self, new_data): + def insert(self, current_node,new_data): if self.root is None: self.root = Node(new_data) else: - if self.root.val < new_data: + if current_node.val < new_data: + if current_node.right == None: + current_node.right = Node(new_data) + else: + self.insert(current_node.right, new_data) - self.insert(self.root.right, new_data) - else: - self.insert(self.root.left, new_data) + elif current_node.val > new_data: + if current_node.left == None: + current_node.left = Node(new_data) + else: + self.insert(current_node.left,new_data) - def inorder(self): - if self.root: - self.inorder(self.root.left) - print(self.root.val) - self.inorder(self.root.right) + def inorder(self,node): + if node is not None: + self.inorder(node.left) + print(node.val) + self.inorder(node.right) if __name__ == '__main__': tree = BST() - tree.insert(5) - tree.insert(4) - tree.insert(7) - tree.inorder() + tree.insert(tree.root,5) + tree.insert(tree.root,4) + tree.insert(tree.root,7) + tree.inorder(tree.root) \ No newline at end of file