我在研究广度优先搜索或BFS算法,我发现了一个想法我显示了实现bfs的图的树结构。现在也许我可以使用链表以不同的方式显示树结构,但是我想修改我用来显示树结构的BFS方法
public class BFS
{
private Queue<Integer> queue;
public BFS()
{
queue = new LinkedList<Integer>();
}
public void bfs(int adjacency_matrix[][], int source)
{
int number_of_nodes = adjacency_matrix[source].length - 1;
int[] visited = new int[number_of_nodes + 1];
int i, element;
visited[source] = 1;
queue.add(source);
while (!queue.isEmpty())
{
element = queue.remove();
i = element;
System.out.print(i + "\t");
while (i <= number_of_nodes)
{
if (adjacency_matrix[element][i] == 1 && visited[i] == 0)
{
queue.add(i);
visited[i] = 1;
}
i++;
}
}
}
上面给出的是我的bfs方法,有人能帮助我让我知道我需要对代码做什么样的修改,以便得到所需的输出吗?
例如,假设给定的邻接矩阵如下:
{0,1,0,0,0,1,0,0
1,0,0,0,0,0,0,0
0,0,0,0,0,0,1,0
0,0,0,0,0,0,1,1
0,0,0,0,0,1,0,0
1,0,0,0,1,0,1,0
0,0,1,0,0,1,0,1
0,0,0,1,0,0,0,1}
这个图的树结构如下
A
/ \
B F
/ \
E G
/ | \
C H D
最佳答案
你可以和朋友们一起做你描述的事情,但这很麻烦。按顺序遍历或按顺序遍历可能更合适检查here并看看适合什么。