# Insertion in binary search tree without recursion in java

Java program for Insertion in binary search tree without recursion. Here more information.

```
// Java program for
// iterative insert binary search tree
class TreeNode
{
public int data;
public TreeNode left, right;
public TreeNode(int data)
{
this.data = data;
this.left = null;
this.right = null;
}
}
public class BinarySearchTree
{
public TreeNode root;
public BinarySearchTree()
{
this.root = null;
}
//insert a element
public void addNode(int data)
{
// Create a new node
TreeNode node = new TreeNode(data);
if (this.root == null)
{
// When adds a first node in bst
this.root = node;
}
else
{
TreeNode find = this.root;
// Add new node to proper position
while (find != null)
{
if (find.data >= data)
{
if (find.left == null)
{
// When left child empty
// So add new node here
find.left = node;
return;
}
else
{
// Otherwise
// Visit left sub-tree
find = find.left;
}
}
else
{
if (find.right == null)
{
// When right child empty
// So add new node here
find.right = node;
return;
}
else
{
// Visit right sub-tree
find = find.right;
}
}
}
}
}
// Display preorder
public void preorder(TreeNode node)
{
if (node != null)
{
// Display node value
System.out.print(" " + node.data);
// Visit to left subtree
preorder(node.left);
// Visit to right subtree
preorder(node.right);
}
}
public void inorder(TreeNode node)
{
if (node != null)
{
// Visit to left subtree
inorder(node.left);
// Display node value
System.out.print(" " + node.data);
// Visit to right subtree
inorder(node.right);
}
}
public void postorder(TreeNode node)
{
if (node != null)
{
// Visit to left subtree
postorder(node.left);
// Visit to right subtree
postorder(node.right);
// Display node value
System.out.print(" " + node.data);
}
}
public static void main(String[] args)
{
BinarySearchTree tree = new BinarySearchTree();
/*
10
/ \
/ \
4 15
/ \ /
3 5 12
-------------
Build binary search tree
*/
tree.addNode(10);
tree.addNode(4);
tree.addNode(3);
tree.addNode(5);
tree.addNode(15);
tree.addNode(12);
// Display tree nodes
System.out.println("Preorder ");
tree.preorder(tree.root);
System.out.println("\nInorder ");
tree.inorder(tree.root);
System.out.println("\nPostorder ");
tree.postorder(tree.root);
}
}
```

**Output**

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

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.

## New Comment