深度优先搜索Java

时间:2013-12-09 21:10:54

标签: java algorithm depth-first-search

我有一个需要在java中实现DFS的作业。

刺伤如下:

public List<Integer> DepthFirstList(Integer v) 
{
    List<Integer> vertices = new ArrayList<Integer>();
    Deque<Integer> toExplore = new ArrayDeque<Integer>();
    List<Integer> visited = new ArrayList<Integer>();
    return vertices;
}

它接受v的参数(作为整数的起点),并遍历所有图形。 我知道toExplore是所有节点序列的堆栈。 “visited”是包含节点是否被访问的数组(通过分配“0”或“1”),并且它们被初始化为全“0”。 但是需要返回的“顶点”是什么?

典型的图表如下所示:

9//Number of vertices
0: {1,6} {8,2} {5,4}//{edge with, weight}
1: {0,6} {2,7} {4,9}
2: {3,4} {4,3} {1,7}
3: {1,5} {5,3}
4: {2,3} {6,1}
5: {3,3} {0,7}
6: {4,1} {1,2}

已经编写了读取输入的代码。

1 个答案:

答案 0 :(得分:0)

  

但是需要返回的“顶点”是什么?

根据函数的名称,我想你应该按访问顺序返回一个访问顶点列表。

除非我遗漏了某些内容,否则这与visited相同,这有点多余。但visited实际上应该是Set才能进行有效查找,这会让vertices变得更有意义。

但我无法确定你的老师在想什么。你应该去找他们确认。

我假设(基于你的问题)你不是在寻求帮助来编写这个功能,只是理解这个部分。