import java.HashMap;
import java.util.HashSet;
import java.util.ArrayList;
import java.util.Stack;
public class DFS {
public class Node {
public int value;
public int in;
public int out;
public ArrayList<Node> nexts;
public ArrayList<Edge> edges;
Node(Node value) {
this.value = value;
in = out = 0;
nexts = new ArrayList<Node>();
edges = new ArrayList<Edge>();
}
}
public class Edge {
public int weight;
public Node from;
public Node to;
Edge(int weight, Node from, Node to) {
this.weight = weight;
this.from = from;
this.to = to;
}
}
public class Graph {
public HashMap<Integer, Node> nodes;
public HashSet<Edge> edges;
Graph() {
nodes = new HashMap<Integer, Node>();
edges = new HashSet<Edge>();
}
}
public static void dfs(Node node) {
if (node == null)
return;
Stack<Node> stack = new Stack<>();
HashSet<Node> set = new HashSet<>();
stack.add(node);
set.add(node);
System.out.println(); //任意更改
while (!stack.isEmpty()) {
Node cur = stack.pop();
for (Node next : cur.nexts) {
if (!set.contains(next)) {
stack.push(cur);
stack.push(next);
set.add(next);
System.out.println(); //可变
break;
}
}
}
}
}
用通用图结构写DFS算法
最新推荐文章于 2024-10-15 19:28:18 发布