我正在使用BFS来检查节点是否可访问以及是否打印路由。 谁能解释为什么在这种情况下BFS比DFS更受欢迎? 使用以下代码:
LinkedList<String> queue = new LinkedList<String>();
HashSet<String> visitedNodes = new LinkedHashSet<String> ();
queue.add(source);
visitedNodes.add(source);
while (!queue.isEmpty()) {
String focusNode = queue.poll();
Set<Node> nodeSet = inputMap.getAllOutgoingNodes(focusNode);
if (null != nodeSet) {
for (Node s: nodeSet) {
if (!visitedNodes.contains(s.edge1)) {
visitedNodes.add(s.edge1);
queue.add(s.edge1);
if (destination.equals(s.edge1)) {
for (String sn: visitedNodes) {
System.out.print(sn);
break;
}
}
}
}
}
答案 0 :(得分:0)
如果问题是检查一个节点是否可以访问,那么我相信DFS是首选(通常只是代码长度),如果你还必须找到一个路由,那么找到一个DFS的路径可能会很长(因此人们很难检查,因此首选BFS。
但无论如何都没有一般规则,这完全取决于个人偏好。