Go4Expert

Go4Expert (http://www.go4expert.com/)
-   C++ (http://www.go4expert.com/forums/cpp/)
-   -   binary search tree problems (http://www.go4expert.com/forums/binary-search-tree-t10384/)

extincty 4May2008 21:50

binary search tree problems
 
Code:




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

#define MAX 100

typedef struct node{
        struct node *left;
        int data;
        struct node *rt;
}BST;

void insert(BST **b,int num);
void inorder(BST *);
void preorder(BST *);
void postorder(BST *);

int count(BST *s);
int search(BST **s,int fnd);
void dlt(BST **s,int);

BST *b;
int ch,ch1,num,cnt=0,fnd,srch,nmbr;

void main()
{   
        while(1){
                clrscr();
                printf("\n1.insert\n2.search\n3.traversal\n4.delete\n5.count\n6.exit");
                printf("\nenter your choice: ");
                printf("\n(no 4 is inactive.dont press it): ");
                scanf("\t%d",&ch);
                switch(ch){
                        case 1:  printf("enter a data: ");
                                                scanf("%d",&num);
                                                fnd=search(&b,num);
                                                if(fnd==0)        insert(&b,num);
                                                else{
                                                        printf("\nelement already present in the list\n");
                                                        getch();
                                                }
                                                break;
                        case 2:  printf("enter the number you want to search in the list: ");
                                                scanf("%d",&srch);
                                                fnd=search(&b,srch);
                                                if(fnd==0)        printf("\nnot found\n");
                                                else        printf("\nelement found\n");
                                                getch();
                                                break;
                        case 3:        printf("which traversal technique you want to follow:\n");
                                                printf("1.inorder\n2.preorder\n3.postorder");
                                                printf("\nyour choice is: ");
                                                scanf("%d",&ch1);
                                                switch(ch1){
                                                        case 1:        inorder(b);
                                                                                getch();
                                                                                break;
                                                        case 2:        preorder(b);
                                                                                getch();
                                                                                break;
                                                        case 3:        postorder(b);
                                                                                getch();
                                                                                break;
                                                }        // end of inner switch-case
                                                break;
                        case 4:  printf("enter th enumber you want to delete: ");
                                                scanf("%d",&nmbr);
                                                fnd=search(&b,nmbr);
                                                if(fnd==0)        printf("\nnot found\n");
                                                else        dlt(&b,nmbr);
                                                getch();
                                                break;
                        case 5:        cnt=count(b);
                                                if(cnt==0)        printf("\nlist is empty\n");
                                                else        printf("\nthere are %d elements present in the list",cnt);
                                                getch();
                                                break;
                        case 6:        exit(0);
                                                break;
                        default:        printf("you are entering a wrong choice\n\n");
                                getch();
                }        // end of outer switch-case
        }        // end of while
}        // end of main


void insert(BST **s,int num)
{
        if(*s==NULL){
                *s=(BST*)malloc(sizeof(BST));
                (*s)->left=NULL;
                (*s)->data=num;
                (*s)->rt=NULL;
                return;
        }
        if(num<(*s)->data)        insert((&(*s)->left),num);
        else        insert((&(*s)->rt),num);
        return;
}

void inorder(BST *s)
{
        if(s!=NULL){
                inorder(s->left);
                printf("\t%d",s->data);
                inorder(s->rt);
        }
        else        return;
}

void preorder(BST *s)
{
        if(s!=NULL){
                printf("\t%d",s->data);
                preorder(s->left);
                preorder(s->rt);
        }
        else        return;
}

void postorder(BST *s)
{
        if(s!=NULL){
                postorder(s->left);
                postorder(s->rt);
                printf("\t%d",s->data);
        }
        else        return;
}

int search(BST **s,int num)
{
        if(*s==NULL)        return 0;
        else if(num > (*s)->data)        search((&(*s)->rt),num);
        else if(num < (*s)->data)        search((&(*s)->left),num);
        else if(num == (*s)->data)        return 1;
}

int count(BST *s)
{
        int a[MAX],i=0,c=0;
        if(s!=NULL){
                count(s->left);
                count(s->rt);
      a[i]=s->data;
                i++;
        }
/*                a[i]='\0';
                while(a[i]!='\0'){
                        c++;
                        i++;
                }
                return c;*/
                return i;
}


void dlt(BST **s,int nmbr)
{
        int c;
        printf("delete operation\n\n");
}


shabbir 5May2008 11:42

Re: binary search tree problems
 
Please do not attach the code into text file. I have removed the text file and updated the post to have the code.


All times are GMT +5.5. The time now is 09:15.