Skip to main content

Binary Search Tree using C

BST (Binary Search Tree) implementation using C language

Operations: - Create tree, Preorder traversal, Postoreder treaversal, and Inoreder traversal

/* BINARY SEARCH TREE */

#include<stdio.h>
#include<conio.h>

  struct node
  { int info;
    struct node *left_child;
    struct node *right_child;
  }*p=NULL;

  typedef struct node node;
  typedef struct node * nptr;
  //nptr p=NULL;

  nptr create_tree(nptr,int);
  void postorder(nptr);
  void preorder(nptr);
  void inorder(nptr);

    void main()
  { int ch,num;
    
    while(1)
    { clrscr();
      printf("\nBINARY SEARCH TREE \n\n");
      printf(" 1.Create tree\n");
      printf(" 2.Inorder traversal\n");
      printf(" 3.Preorder traversal\n");
      printf(" 4.Postorder traversal\n");
      printf(" 5.Exit\n");
      printf("\n\nEnter ur choice: ");
      scanf("%d",&ch);
      switch(ch)
      { case 1: printf("\nenter the info: ");
scanf("%d",&num);
p=create_tree(p,num);
break;
case 2: inorder(p);
break;
case 3: preorder(p);
break;
case 4: postorder(p);
break;
case 5: exit(0);
default: printf("\n\nInvalid choice\n");
       }
    getch();
   }
  }


  nptr create_tree(nptr p,int num)
  { 
    nptr root;
    
    if(p==NULL)
    { root=(nptr)malloc(sizeof(node));
      root->left_child=NULL;
      root->right_child=NULL;
      //printf("\n\nenter number: ");
      //scanf("%d",&num);
      root->info=num;
   
      p=root;
    }
    else
    { if(p->info>=num)
      { p->left_child=create_tree(p->left_child,num);
//printf("\nleft\n");
      }
      else
      { p->right_child=create_tree(p->right_child,num);
//printf("\nright\n");
      }
    }
  return p;
  }

  void inorder(nptr p)
  { if(p!=NULL)
    { inorder(p->left_child);
      printf("\n %d",p->info);
      inorder(p->right_child);
    }
  }

  void postorder(nptr p)
  { if(p!=NULL)
    { postorder(p->left_child);
      postorder(p->right_child);
      printf("\n %d",p->info);
    }
  }

  void preorder(nptr p)
  { if(p!=NULL)
    { printf("\n %d",p->info);
      preorder(p->left_child);
      preorder(p->right_child);
    }
  }

Comments

Popular posts from this blog

Use Case Diagram for Online Book Store

Linear search & Binary search using Template

Write a program to search an element from a list. Give user the option to perform Linear or Binary search. Use Template functions. #include<iostream> using namespace std; template <class T> void Lsearch(T *a, T item, int n) { int z=0; for(int i=0;i<n;i++) { if(a[i]== item) { z=1; cout<<"\n Item found at position = "<<i+1<<"\n\n"; } else if(z!=1) { z=0; } } if(z==0) cout<<"\n Item not found in the list\n\n"; } template <class T> void Bsearch(T *a, T item, int n) { int beg=0,end=n-1; int mid=beg+end/2; while((a[mid]!=item) && (n>0)) { if(item>a[mid]) beg=mid; else end=mid; mid=(beg+end)/2; n--; } if(a[mid]==item) cout<<"\n Item found at position = "<<mid+1<<"\n\n"; else cout<<"\n Item not found in the list\n\n"; } void main() { int iarr[10] = {2,42,56,86,87,99,323,546,767,886};...

Occurrences of each letter of alphabet in the text

Program to print a table indicating the no. of occurrences of each letter of alphabet in the text entered as command line arguments. #include<iostream> #include<string> using namespace std; int main(int argc, char *argv[]) { string str=""; static int alphabet[26]; int x; cout<<"\n\n Command-Line Argument\n"; for(int i=0;i<argc;i++) { cout<<"\n "<<argv[i]; str+=argv[i]; } for(int i=0;i<str.length();i++) { if(str[i]>='A' && str[i]<='Z') { x=((int)str[i])-65; alphabet[x]++; } else if(str[i]>='a' && str[i]<='z') { x=((int)str[i])-97; alphabet[x]++; } } //Displaying No. of occurrences of each alphabets in the command line argument cout<<"\n\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n Alphabet No. of Occurrences\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"; for(int i=0;i<26;i++)...