Skip to content

Commit f4f8bd5

Browse files
committed
improved java recursive dfs
1 parent cb33e87 commit f4f8bd5

File tree

1 file changed

+12
-5
lines changed

1 file changed

+12
-5
lines changed

src/java/sequential/graph/dfs/RecursiveDepthFirstTraversal.java

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -12,23 +12,30 @@ class RecursiveDepthFirstTraversal<T> {
1212
private Map<T, List<T>> graph;
1313
private Set<T> explored;
1414

15-
public Collection<T> dfs(Map<T, List<T>> graph, T root) {
15+
public synchronized Collection<T> dfs(Map<T, List<T>> graph, T root) {
1616
this.graph = graph;
1717
explored = new LinkedHashSet<>();
1818

19-
explore(root);
20-
21-
return explored;
19+
var traversed = explore(root);
20+
21+
clear();
22+
return traversed;
2223
}
2324

24-
private void explore(T node) {
25+
private Collection<T> explore(T node) {
2526
explored.add(node);
2627

2728
var successors = graph.getOrDefault(node, List.of());
2829
for (var succ : successors)
2930
if (!explored.contains(succ)) explore(succ);
31+
32+
return explored;
3033
}
3134

35+
private void clear() {
36+
explored = null;
37+
graph = null;
38+
}
3239

3340
public static void main(String[] args) {
3441
var graph = Map.of(

0 commit comments

Comments
 (0)