# Insertion in binary search tree using recursion in python

Python program for Insertion in binary search tree using recursion. Here problem description and explanation.

``````#  Python 3 program for
#  Insertion in binary search tree by using recursion
class TreeNode :
def __init__(self, data) :
self.data = data
self.left = None
self.right = None

class BinarySearchTree :
def __init__(self) :
self.root = None

#  Insert a node element
def addNode(self, node, data) :
if (node != None) :
if (node.data >= data) :
#  When new element is smaller or
#  equal to current node
node.left = self.addNode(node.left, data)
else :
#  When new element is higher to current node
node.right = self.addNode(node.right, data)

#  important to manage root node
return node
else :
return TreeNode(data)

#  Display preorder
def preorder(self, node) :
if (node != None) :
#  Display node value
print(" ", node.data, end = "")
#  Visit to left subtree
self.preorder(node.left)
#  Visit to right subtree
self.preorder(node.right)

def inorder(self, node) :
if (node != None) :
#  Visit to left subtree
self.inorder(node.left)
#  Display node value
print(" ", node.data, end = "")
#  Visit to right subtree
self.inorder(node.right)

def postorder(self, node) :
if (node != None) :
#  Visit to left subtree
self.postorder(node.left)
#  Visit to right subtree
self.postorder(node.right)
#  Display node value
print(" ", node.data, end = "")

def main() :
tree = BinarySearchTree()
#         10
#        / \
#       /   \
#      4     15
#     / \   /
#    3   5 12
#    -------------
#    Build binary search tree
tree.root = tree.addNode(tree.root, 10)
#  Display tree nodes
print("Preorder ")
tree.preorder(tree.root)
print("\nInorder ")
tree.inorder(tree.root)
print("\nPostorder ")
tree.postorder(tree.root)

if __name__ == "__main__": main()``````

Output

``````Preorder
10  4  3  5  15  12
Inorder
3  4  5  10  12  15
Postorder
3  5  4  12  15  10``````

## Comment

Please share your knowledge to improve code and content standard. Also submit your doubts, and test case. We improve by your feedback. We will try to resolve your query as soon as possible.