- #include
- #include
- #include
- struct tree
- {
- int data;
- tree *left;
- tree *right;
- }*root;
- void main()
- {
- root=NULL;
- int d;
- void add();
- void traverse(tree *);
- tree* del(tree *,int);
- int c;
- do
- {
- printf("\nM A I N M E N U ");
- printf("\n=====================");
- printf("\n1. Add a node ");
- printf("\n2. Display tree");
- printf("\n3. Delete a node");
- printf("\n4. Quit");
- printf("\nSelect your choice ");
- scanf("%d",&c);
- if(c==1)
- add();
- else if(c==2)
- traverse(root);
- else if(c==3)
- {
- printf("\nEnter data to delete ");
- scanf("%d",&d);
- root=del(root,d);
- }
- }while(c!=4);
- }
- void add()
- {
- printf("\nAdd a node ");
- tree *t,*prev;
- tree *search(tree *,int);
- t=(tree *)malloc(sizeof(tree));
- printf("\nEnter data ");
- scanf("%d",&t->data);
- if(root==NULL)
- {
- root=t;
- t->left=NULL;
- t->right=NULL;
- }
- else
- {
- prev=search(root,t->data);
- if(prev==NULL)
- {
- printf("\nNode already exists");
- return;
- }
- else if(prev->data>t->data)
- {
- prev->left=t;
- }
- else
- prev->right=t;
- t->left=NULL;
- t->right=NULL;
- }
- printf("\nNode Added ");
- }
- tree *search(tree *r,int d)
- {
- tree *prev;
- while(r!=NULL)
- {
- if(r->data==d)
- return NULL;
- else if(r->data>d)
- {
- prev=r;
- r=r->left;
- }
- else
- {
- prev=r;
- r=r->right;
- }
- }
- return prev;
- }
- void traverse(tree *r)
- {
- if(r==NULL)
- return;
- traverse(r->left);
- printf("\n%d",r->data);
- traverse(r->right);
- }
- tree *del(struct tree *root, int key)
- {
- tree *p,*p2;
- if(!root)
- return root;
- if(root->data == key)
- {
- if(root->left == root->right){
- free(root);
- return NULL;
- }
- else if (root->left == NULL)
- {
- p = root->right;
- free(root);
- return p;
- }
- else if(root->right == NULL)
- {
- p = root->left;
- free(root);
- return p;
- }
- else
- {
- p2 = root->right;
- p = root->right;
- while(p->left)
- p = p->left;
- p->left = root->left;
- free(root);
- return p2;
- }
- }
- if(root->data < key)
- root->right = del(root->right, key);
- else
- root->left = del(root->left, key);
- return root;
- }
Tuesday, January 18, 2011
Binary Sorted Tree : Source Code
Subscribe to:
Post Comments (Atom)
0 comments:
Post a Comment