8000 Add DFS · AllAlgorithms/java@53e8546 · GitHub
[go: up one dir, main page]

Skip to content

Commit 53e8546

Browse files
miqdadyyyabranhe
authored andcommitted
Add DFS
DFS Search Pattern
1 parent 7df0870 commit 53e8546

File tree

1 file changed

+89
-0
lines changed

1 file changed

+89
-0
lines changed

DFS.java

Lines changed: 89 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,89 @@
1+
2+
import java.util.ArrayList;
3+
import java.util.LinkedList;
4+
import java.util.Queue;
5+
6+
/**
7+
*
8+
* @author miqdad
9+
*/
10+
class Node {
11+
12+
int value;
13+
int index; // represent index of node
14+
boolean isVisited;
15+
ArrayList<Node> neighbor;
16+
17+
public Node(int index, int value) {
18+
this.index = index;
19+
this.value = value;
20+
this.neighbor = new ArrayList<Node>();
21+
this.isVisited = false;
22+
}
23+
24+
public void addNeighbor(Node node) {
25+
this.neighbor.add(node);
26+
}
27+
}
28+
29+
class Graph {
30+
31+
int totalNode;
32+
Node[] nodes;
33+
34+
public Graph(int totalNode) {
35+
this.totalNode = totalNode;
36+
nodes = new Node[totalNode];
37+
for (int i = 0; i < totalNode; i++) {
38+
int value = (int) (Math.random() * 100); // gives random value to node
39+
nodes[i] = new Node(i, value);
40+
}
41+
}
42+
43+
public void addEdge(int s, int d) { // index node
44+
// add neighbor each other
45+
nodes[s].addNeighbor(nodes[d]);
46+
nodes[d].addNeighbor(nodes[s]);
47+
}
48+
49+
public void initDFS() {
50+
Node root = nodes[0];
51+
DFS(root);
52+
}
53+
54+
public void DFS(Node node) {
55+
if (!nodes[node.index].isVisited) {
56+
System.out.print(node.value + " ");
57+
node.isVisited = true;
58+
}
59+
for (Node n : node.neighbor) {
60+
if(!n.isVisited){
61+
DFS(n);
62+
}
63+
}
64+
65+
}
66+
}
67+
68+
public class DFS {
69+
public static void main(String[] args){
70+
Graph graph = new Graph(10); // 10 nodes in this graph
71+
for(Node n : graph.nodes){
72+
System.out.printf("Node index %d has value %d\n", n.index, n.value);
73+
}
74+
75+
graph.addEdge(0, 1);
76+
graph.addEdge(0, 2);
77+
graph.addEdge(0, 3);
78+
graph.addEdge(1, 4);
79+
graph.addEdge(1, 5);
80+
graph.addEdge(2, 6);
81+
graph.addEdge(2, 7);
82+
graph.addEdge(3, 8);
83+
graph.addEdge(3, 9);
84+
graph.addEdge(1, 7);
85+
86+
graph.initDFS();
87+
System.out.println("");
88+
}
89+
}

0 commit comments

Comments
 (0)
0