在给定链表表示的情况下,如何使用递归实现BFS
?
我知道DFS
可以使用递归实现,但不能使用BFS
实现。请建议一种可能的方法?
答案 0 :(得分:0)
请注意,[]
代表一个列表。
f(graph, past_nodes, current_nodes, mark):
new_nodes = all neighbors of current_nodes which are not in past_nodes
if new_nodes == []:
return
else
for each n in new_nodes:
mark(n)
f(graph, past_nodes union current_nodes, new_nodes, mark)
首先调用f(graph, [], [start_node], m)
,其中m
是您希望以BFS顺序为每个节点运行的函数。
答案 1 :(得分:0)
void bfs(int vertex)
{
int p;
void mark(int);
m=g[vertex];
if(m->v==1)
return;
m->v=1;
printf("%c ",m->a);
while(m->link!=NULL)
{
m=m->link;
if(m->v==0)
{
m->v=1;
p=int(m->a)-65;
mark(p);
}
}
m=g[vertex];
while(m->link!=NULL)
{
m=m->link;
bfs(p);
}
}
我被困在这里。