132 lines
3.5 KiB
C#
132 lines
3.5 KiB
C#
/*
|
|
* C# Program to Implement Binary Search Tree using Linked List
|
|
*/
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Text;
|
|
namespace TreeSort
|
|
{
|
|
class Node
|
|
{
|
|
public int item;
|
|
public Node leftc;
|
|
public Node rightc;
|
|
public void display()
|
|
{
|
|
Console.Write("[");
|
|
Console.Write(item);
|
|
Console.Write("]");
|
|
}
|
|
}
|
|
class Tree
|
|
{
|
|
public Node root;
|
|
public Tree()
|
|
{
|
|
root = null;
|
|
}
|
|
public Node ReturnRoot()
|
|
{
|
|
return root;
|
|
}
|
|
public void Insert(int id)
|
|
{
|
|
Node newNode = new Node();
|
|
newNode.item = id;
|
|
if (root == null)
|
|
root = newNode;
|
|
else
|
|
{
|
|
Node current = root;
|
|
Node parent;
|
|
while (true)
|
|
{
|
|
parent = current;
|
|
if (id < current.item)
|
|
{
|
|
current = current.leftc;
|
|
if (current == null)
|
|
{
|
|
parent.leftc = newNode;
|
|
return;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
current = current.rightc;
|
|
if (current == null)
|
|
{
|
|
parent.rightc = newNode;
|
|
return;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
public void Preorder(Node Root)
|
|
{
|
|
if (Root != null)
|
|
{
|
|
Console.Write(Root.item + " ");
|
|
Preorder(Root.leftc);
|
|
Preorder(Root.rightc);
|
|
}
|
|
}
|
|
public void Inorder(Node Root)
|
|
{
|
|
if (Root != null)
|
|
{
|
|
Inorder(Root.leftc);
|
|
Console.Write(Root.item + " ");
|
|
Inorder(Root.rightc);
|
|
}
|
|
}
|
|
public void Postorder(Node Root)
|
|
{
|
|
if (Root != null)
|
|
{
|
|
Postorder(Root.leftc);
|
|
Postorder(Root.rightc);
|
|
Console.Write(Root.item + " ");
|
|
}
|
|
}
|
|
}
|
|
class Program
|
|
{
|
|
static void Main(string[] args)
|
|
{
|
|
Tree theTree = new Tree();
|
|
theTree.Insert(20);
|
|
theTree.Insert(25);
|
|
theTree.Insert(45);
|
|
theTree.Insert(15);
|
|
theTree.Insert(67);
|
|
theTree.Insert(43);
|
|
theTree.Insert(80);
|
|
theTree.Insert(33);
|
|
theTree.Insert(67);
|
|
theTree.Insert(99);
|
|
theTree.Insert(91);
|
|
Console.WriteLine("Inorder Traversal : ");
|
|
theTree.Inorder(theTree.ReturnRoot());
|
|
Console.WriteLine(" ");
|
|
Console.WriteLine();
|
|
Console.WriteLine("Preorder Traversal : ");
|
|
theTree.Preorder(theTree.ReturnRoot());
|
|
Console.WriteLine(" ");
|
|
Console.WriteLine();
|
|
Console.WriteLine("Postorder Traversal : ");
|
|
theTree.Postorder(theTree.ReturnRoot());
|
|
Console.WriteLine(" ");
|
|
Console.ReadLine();
|
|
}
|
|
}
|
|
}
|
|
|
|
/*
|
|
Inorder Traversal :
|
|
15 20 25 33 43 45 67 67 80 91 99
|
|
Preorder Traversal :
|
|
20 15 25 45 43 33 67 80 67 99 91
|
|
Postorder Traversal :
|
|
15 33 43 67 91 99 80 67 45 25 20 |