Social Icons

banner image

binary search tree

code 1

//BINARAY SEARCH TREE
#include<iostream>
#include<conio.h>
using namespace std;
struct node
{
int info;
struct node *left, *right;
}*root=NULL,*nptr;

int insert (node *r,node *n)
{
if(root==NULL)
{
root=n;
root->left=NULL;
root->right=NULL;
return 0;
}
if(r->info==n->info)
{
cout<<"tree";
return 0;
}
if(r->info>n->info)
{
if(r->left!=NULL)
{
insert(r->left,n);
}
else
{
r->left=n;
(r->left)->left=NULL;
(r->left)->right=NULL;
}
return 0;
    }
    else
    {
    if(r->right!=NULL)
    {
    insert(r->right,n);
}
else
{
r->right=n;
(r->right)->right=NULL;
(r->right)->left=NULL;
}
return 0;
}
//PRE ORDER
}
int pre(node *p)
{
if(root==NULL)
{
cout<<"Tree is NULL\n";
return 0;
}
if(p!=NULL)
{
cout<<p->info<<endl;
pre(p->left);
pre(p->right);
}
}
//POST ORDER
int post(node *p)
{
if(root==NULL)
{
cout<<"Tree is empty\n";
return 0;
}
if(p!=NULL)
{
post(p->left);
post(p->right);
cout<<p->info<<endl;
}
}
//IN ORDER
int in(node *p)
{
if(root==NULL)
{
cout<<"Tree is empty\n";
return 0;
}
if(p!=NULL)
{
post(p->left);
cout<<p->info<<endl;
post(p->right);
}
}

int main()
{
int n;
for(int i=0;i<5;i++)
{
cout<<"Enter the Choice\n";

    cin>>n;
do
{
if(n==1)
{
nptr=new node;
       cin>>nptr->info;
       insert(root,nptr);
}
else if(n==2)
{
cout<<"PRE ORDER\n";
       pre(root);
}
else
{
cout<<"IN ORDER\n";
           in(root);
}
}
while(ch=1||2||3);
}
}
}
code 2:
# include <stdio.h>
# include <conio.h>
# include <stdlib.h>
 
typedef struct BST {
   int data;
   struct BST *lchild, *rchild;
} node;
 
void insert(node *, node *);
void inorder(node *);
void preorder(node *);
void postorder(node *);
node *search(node *, int, node **);
 
void main() {
   int choice;
   char ans = 'N';
   int key;
   node *new_node, *root, *tmp, *parent;
   node *get_node();
   root = NULL;
   clrscr();
 
   printf("\nProgram For Binary Search Tree ");
   do {
      printf("\n1.Create");
      printf("\n2.Search");
      printf("\n3.Recursive Traversals");
      printf("\n4.Exit");
      printf("\nEnter your choice :");
      scanf("%d", &choice);
 
      switch (choice) {
      case 1:
         do {
            new_node = get_node();
            printf("\nEnter The Element ");
            scanf("%d", &new_node->data);
 
            if (root == NULL) /* Tree is not Created */
               root = new_node;
            else
               insert(root, new_node);
 
            printf("\nWant To enter More Elements?(y/n)");
            ans = getch();
         } while (ans == 'y');
         break;
 
      case 2:
         printf("\nEnter Element to be searched :");
         scanf("%d", &key);
 
         tmp = search(root, key, &parent);
         printf("\nParent of node %d is %d", tmp->data, parent->data);
         break;
 
      case 3:
         if (root == NULL)
            printf("Tree Is Not Created");
         else {
            printf("\nThe Inorder display : ");
            inorder(root);
            printf("\nThe Preorder display : ");
            preorder(root);
            printf("\nThe Postorder display : ");
            postorder(root);
         }
         break;
      }
   } while (choice != 4);
}
/*
Get new Node
*/
node *get_node() {
   node *temp;
   temp = (node *) malloc(sizeof(node));
   temp->lchild = NULL;
   temp->rchild = NULL;
   return temp;
}
/*
This function is for creating a binary search tree
*/
void insert(node *root, node *new_node) {
   if (new_node->data < root->data) {
      if (root->lchild == NULL)
         root->lchild = new_node;
      else
         insert(root->lchild, new_node);
   }
 
   if (new_node->data > root->data) {
      if (root->rchild == NULL)
         root->rchild = new_node;
      else
         insert(root->rchild, new_node);
   }
}
/*
This function is for searching the node from
binary Search Tree
*/
node *search(node *root, int key, node **parent) {
   node *temp;
   temp = root;
   while (temp != NULL) {
      if (temp->data == key) {
         printf("\nThe %d Element is Present", temp->data);
         return temp;
      }
      *parent = temp;
 
      if (temp->data > key)
         temp = temp->lchild;
      else
         temp = temp->rchild;
   }
   return NULL;
}
/*
This function displays the tree in inorder fashion
*/
void inorder(node *temp) {
   if (temp != NULL) {
      inorder(temp->lchild);
      printf("%d", temp->data);
      inorder(temp->rchild);
   }
}
/*
This function displays the tree in preorder fashion
*/
void preorder(node *temp) {
   if (temp != NULL) {
      printf("%d", temp->data);
      preorder(temp->lchild);
      preorder(temp->rchild);
   }
}
 
/*
This function displays the tree in postorder fashion
*/
void postorder(node *temp) {
   if (temp != NULL) {
      postorder(temp->lchild);
      postorder(temp->rchild);
      printf("%d", temp->data);
   }
}
binary search tree binary search tree Reviewed by Shobhit Goel on November 07, 2015 Rating: 5

No comments:

Airtel Hackaton 2017

Powered by Blogger.