Skip to content

Commit 91c0848

Browse files
Merge pull request fnplus#46 from plaidshirtakos/master
Depth First Search in Java added
2 parents 465d05f + 6d0761b commit 91c0848

File tree

1 file changed

+103
-0
lines changed

1 file changed

+103
-0
lines changed
Lines changed: 103 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,103 @@
1+
import java.util.ArrayList;
2+
import java.util.List;
3+
import java.util.Stack;
4+
5+
public class DepthFirstSearchExampleNeighbourList
6+
{
7+
static class Node
8+
{
9+
int data;
10+
boolean visited;
11+
List<Node> neighbours;
12+
13+
Node(int data){
14+
this.data=data;
15+
this.neighbours=new ArrayList<>();
16+
}
17+
public void addneighbours(Node neighbourNode)
18+
{
19+
this.neighbours.add(neighbourNode);
20+
}
21+
public List<Node> getNeighbours(){
22+
return neighbours;
23+
}
24+
public void setNeighbours(List<Node> neighbours){
25+
this.neighbours = neighbours;
26+
}
27+
}
28+
29+
// Recursive DFS
30+
public void dfs(Node node){
31+
System.out.print(node.data + " ");
32+
List<Node> neighbours=node.getNeighbours();
33+
node.visited=true;
34+
for (int i = 0; i < neighbours.size(); i++) {
35+
Node n=neighbours.get(i);
36+
if(n!=null && !n.visited)
37+
{
38+
dfs(n);
39+
}
40+
}
41+
}
42+
43+
// Iterative DFS using stack
44+
public void dfsUsingStack(Node node){
45+
Stack<Node> stack=new Stack<Node>();
46+
stack.add(node);
47+
while (!stack.isEmpty())
48+
{
49+
Node element=stack.pop();
50+
if(!element.visited){
51+
System.out.print(element.data + " ");
52+
element.visited=true;
53+
}
54+
55+
List<Node> neighbours=element.getNeighbours();
56+
for (int i = 0; i < neighbours.size(); i++) {
57+
Node n=neighbours.get(i);
58+
if(n!=null && !n.visited)
59+
{
60+
stack.add(n);
61+
}
62+
}
63+
}
64+
}
65+
66+
public static void main(String arg[]){
67+
Node node40 =new Node(40);
68+
Node node10 =new Node(10);
69+
Node node20 =new Node(20);
70+
Node node30 =new Node(30);
71+
Node node60 =new Node(60);
72+
Node node50 =new Node(50);
73+
Node node70 =new Node(70);
74+
75+
node40.addneighbours(node10);
76+
node40.addneighbours(node20);
77+
node10.addneighbours(node30);
78+
node20.addneighbours(node10);
79+
node20.addneighbours(node30);
80+
node20.addneighbours(node60);
81+
node20.addneighbours(node50);
82+
node30.addneighbours(node60);
83+
node60.addneighbours(node70);
84+
node50.addneighbours(node70);
85+
86+
DepthFirstSearchExampleNeighbourList dfsExample = new DepthFirstSearchExampleNeighbourList();
87+
System.out.println("The DFS traversal of the graph using stack ");
88+
dfsExample.dfsUsingStack(node40);
89+
System.out.println();
90+
91+
// Resetting the visited flag for nodes
92+
node40.visited=false;
93+
node10.visited=false;
94+
node20.visited=false;
95+
node30.visited=false;
96+
node60.visited=false;
97+
node50.visited=false;
98+
node70.visited=false;
99+
100+
System.out.println("The DFS traversal of the graph using recursion ");
101+
dfsExample.dfs(node40);
102+
}
103+
}

0 commit comments

Comments
 (0)