Insertion in binary search tree using recursion in c#
Csharp program for Insertion in binary search tree using recursion. Here problem description and explanation.
// Include namespace system
using System;
// Csharp program for
// Insertion in binary search tree by using recursion
public class TreeNode
{
public int data;
public TreeNode left;
public TreeNode 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 node element
public TreeNode addNode(TreeNode node, int data)
{
if (node != null)
{
if (node.data >= data)
{
// When new element is smaller or
// equal to current node
node.left = this.addNode(node.left, data);
}
else
{
// When new element is higher to current node
node.right = this.addNode(node.right, data);
}
// important to manage root node
return node;
}
else
{
return new TreeNode(data);
}
}
// Display preorder
public void preorder(TreeNode node)
{
if (node != null)
{
// Display node value
Console.Write(" " + node.data);
// Visit to left subtree
this.preorder(node.left);
// Visit to right subtree
this.preorder(node.right);
}
}
public void inorder(TreeNode node)
{
if (node != null)
{
// Visit to left subtree
this.inorder(node.left);
// Display node value
Console.Write(" " + node.data);
// Visit to right subtree
this.inorder(node.right);
}
}
public void postorder(TreeNode node)
{
if (node != null)
{
// Visit to left subtree
this.postorder(node.left);
// Visit to right subtree
this.postorder(node.right);
// Display node value
Console.Write(" " + node.data);
}
}
public static void Main(String[] args)
{
var tree = new BinarySearchTree();
/*
10
/ \
/ \
4 15
/ \ /
3 5 12
-------------
Build binary search tree
*/
tree.root = tree.addNode(tree.root, 10);
tree.addNode(tree.root, 4);
tree.addNode(tree.root, 3);
tree.addNode(tree.root, 5);
tree.addNode(tree.root, 15);
tree.addNode(tree.root, 12);
// Display tree nodes
Console.WriteLine("Preorder ");
tree.preorder(tree.root);
Console.WriteLine("\nInorder ");
tree.inorder(tree.root);
Console.WriteLine("\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