Insertion in binary search tree without recursion in c#

Csharp program for Insertion in binary search tree without recursion. Here problem description and explanation.

// Include namespace system
using System;
// Csharp program for
// iterative insert in binary search tree
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 element
	public void addNode(int data)
	{
		// Create a new node
		var node = new TreeNode(data);
		if (this.root == null)
		{
			// When adds a first node in bst
			this.root = node;
		}
		else
		{
			var 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
			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.addNode(10);
		tree.addNode(4);
		tree.addNode(3);
		tree.addNode(5);
		tree.addNode(15);
		tree.addNode(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







© 2021, kalkicode.com, All rights reserved