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");
}