Thursday, January 23, 2020

depth first search in c program

#include<stdio.h>
#include<stdlib.h>
struct node{
int data;
struct node* left;
struct node* right;
};
struct node* root = NULL;


void insert();
void dfs();
int main()
{

int size=0;
int choice;
while(1)
{

printf("\nEnter 1-> to insert the data\n");
printf("Enter 2->to display\n");
printf("Enter 3 - > to exit");
printf("Enter your choice\n");
scanf("%d",&choice);
switch(choice)
{
case 1 :  insert();
break;
case 2 : dfs();
break;
case 3 : exit(0);
break;
}

}
}

void insert()
{


struct node* temp;
temp = (struct node*)malloc(sizeof(struct node));
printf("Enter data");
scanf("%d",&temp->data);
temp->left = NULL;
temp->right = NULL;
if(root==NULL)
{
root = temp;
}
else
{
struct node* p = root;
struct node* q = NULL;
while(p!=NULL)
{
q = p;
if(temp->data>p->data)
{
p=p->right;
}
else
{
p = p->left;
}
}
if(temp->data>q->data)
{
q->right = temp;


}
else
{
q->left = temp;
}
}

}

void dfs()
{
struct node* store;
struct node* q[100];
    int c= 0;
int s[100];
int i,r=-1;
q[c] = root;
if(q[c]==NULL)
{
printf("Nothing to display");
}
else
   {
   
     while(1)
     {
   
      if(q[c]->left!=NULL && q[c]->right!=NULL)
      {
     
      s[++r] = q[c]->data;
      store = q[c];
     
      q[c] =store->right;
     
      q[++c]=store->left;
}
else if(q[c]->left!=NULL && q[c]->right==NULL)
      {
      s[++r] = q[c]->data;
      q[c] = q[c]->left;
     
     
}
else if(q[c]->left==NULL && q[c]->right!=NULL)
      {
      s[++r] = q[c]->data;
      q[c] = q[c]->right;
     
}
else if(q[c]->left==NULL && q[c]->right==NULL)
      {
      s[++r] = q[c]->data;
     
      c--;
      if(c==-1) break;
}


}

 
   }
   for(i=0;i<=r;i++)
   {
    printf("%d\t",s[i]);
   }
   


}

No comments:

Post a Comment

Manhattan Distance Heuristic

#include<stdio.h> #include<stdlib.h> struct node{  int arr[10][10];  int i,j;  int md; }; int a[10][10]; struct node*...