微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

DFS节点遍历序列

如何解决DFS节点遍历序列

我正在尝试计算无向节点的遍历

使用 DFS 的图表。据我了解,我的实现是

正确,但结果不正确。


这是我的实现:

public void calculateDfsSequence(long firstNode) {
    long parent = firstNode;
    List<Long> parents = new ArrayList<>();
    List<Long> marked = new ArrayList<>();
    Stack<Long> stack = new Stack<Long>();
    stack.push(firstNode);
    while (!stack.isEmpty()) {
        Long node = stack.pop();
        if(!res.dfsNodeSequence.contains(node)) {
            res.dfsNodeSequence.add(node);
            long[] neighbors = selectionSort(xgraph.getNeighborsOf(node));
            int pushedCnt = 0;
            for (long c : neighbors) {
                if (!res.dfsNodeSequence .contains(c)) {
                    if (pushedCnt == 0) {
                        parents.add(node);
                        pushedCnt = 1;
                    }
                    System.out.println(" pushing     " + c);
                    stack.push(c);
                }
            }
            if (pushedCnt == 0 && !stack.isEmpty()) {
                for (int i = parents.size(); i > 0; i--) {
                    res.dfsNodeSequence.add(parents.get(i - 1));
                }
            }
        }
    }
}

关于如何计算 dfs 节点遍历的任何建议 真的很有帮助

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。