首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用BFS traversal java跟踪倒数第二项

使用BFS traversal java跟踪倒数第二项
EN

Stack Overflow用户
提问于 2020-05-24 20:20:45
回答 1查看 56关注 0票数 0

我可以通过将q.poll保存在一个整数中来跟踪最后一项,但是如何使用这种遍历来跟踪倒数第二项呢?

代码语言:javascript
复制
    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

        }
EN

回答 1

Stack Overflow用户

发布于 2020-05-24 20:54:46

修改方法签名并添加一个列表来存储路径。(size()-2:倒数第一个)

代码语言:javascript
复制
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;
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61985879

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档