我可以通过将q.poll保存在一个整数中来跟踪最后一项,但是如何使用这种遍历来跟踪倒数第二项呢?
public Integer breadthFirstTraversal(Integer v) {
Queue<Integer> q = new LinkedList<Integer>();
VertexIDList adjList;
q.add(v);
getVertex(v).setMarked();
while (!q.isEmpty()) {
v = q.poll();
adjList = getVertex(v).getAdjs();
Iterator<Integer> vIt = adjList.iterator();
while (vIt.hasNext()) {
Integer u = vIt.next();
if (!getVertex(u).isMarked()) {
q.add(u);
getVertex(u).setMarked();
}
}
}
// return second last item here
}发布于 2020-05-24 20:54:46
修改方法签名并添加一个列表来存储路径。(size()-2:倒数第一个)
public Integer breadthFirstTraversal(Integer v, List emptyList) {
//with intermediary vars
int last = 0;
int last1 = 0;
Queue<Integer> q = new LinkedList<Integer>();
VertexIDList adjList;
q.add(v);
getVertex(v).setMarked();
while (!q.isEmpty()) {
v = q.poll();
//store
emptyList.add(getVertex(v));
last1 = last;
last = getVertex(v);
//System.out.println(getVertex(v));
adjList = getVertex(v).getAdjs();
Iterator<Integer> vIt = adjList.iterator();
while (vIt.hasNext()) {
Integer u = vIt.next();
if (!getVertex(u).isMarked()) {
q.add(u);
getVertex(u).setMarked();
}
}
}
// return second last item here
return last1;
}https://stackoverflow.com/questions/61985879
复制相似问题