BFS的程序。 db()在这里的作用是什么?

时间:2018-02-11 17:27:21

标签: c

  1. db()的作用是什么?这是一个BFS程序,但我很困惑如何运行该程序。如果有多个目标,如何打印最低级别目标。 db()在这里的作用是什么?这是一个BFS程序,但我很困惑如何运行该程序。如果有多个目标,如何打印最低级别目标。

     #include<conio.h>
       #include<stdio.h>
       #include<string.h>
       #include<malloc.h>
        #include<math.h>
             void input();
          void output();
           int db(int);
         void BFS(struct tree *);
         struct tree
              {
          char node[10];
            struct tree *left,*right;
            } *temp, *root=NULL,*t,*q[25];
         int d,a[10],jj,ii,ti,b,fi,ri;
         char ch[10];
          void main()
           {
    
           input();
           output();
            getch();
              }
           void input()
              {
           int n,m,r,i,f;
           printf("Enter the no of depth:-");
           scanf("%d",&d);
            n=pow(2,d+1)-1;
            for(i=1;i<=n;i++)
             {
                printf("Enter the %d node name:-",i);
            scanf("%s",ch);
            temp=(struct tree *)malloc(sizeof(struct tree));
         strcpy(temp->node,ch);
          temp->left=NULL;
          temp->right=NULL;
         if(root==NULL)
            {
              root=temp;
           }
         else
           {
           t=root;
            r=db(i);
             for(f=1;f<r;f++)
           {
           if(a[f]==0)
           {
          t=t->left;
        }
           else
        {
          t=t->right;
        }
           }
             if(a[r]==0)
          {
          t->left=temp;
          }
          else
                     {
            t->right=temp;
         }
            }
              }
                   }
            void output()
                {
                  t=root;
                printf("\n Enter the name Goal:-");
            scanf("%s",ch);
               BFS(t);
                 }
                 int db(int n)
              { int ji=0;
                  while(n!=0)
                        {
                a[ji++]=n%2;
                      n=n/2;;
                   }
    
    
                 ji--;
                return ji;
    
    
    
                             }
              BFS(struct tree *t)
               {
               int yes=0,index;
             fi=0;
               ri=1;
             q[fi]=t;
            printf("\n Breadth First search:-\n");
               while(fi<ri)
                  {
               t=q[fi++];
                 printf("%s",t->node);
               if(strcmp(t->node,ch)==0)
                   {
                yes=1;
                 index=fi;
                       }
                  if(t->left!=NULL)
                          {
                    q[ri++]=t->left;
                                     }
                       if(t->right!=NULL)
                          {
                         q[ri++]=t->right;
                               }
                                    }
                          if(yes==1)
            printf("\n Goal State Are Present at Node %d",index);
                           else
             printf("\n Goal State Are Not Present");
                     }
    

0 个答案:

没有答案