This repository was archived by the owner on Sep 7, 2025. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 83
Expand file tree
/
Copy pathDFS.java
More file actions
89 lines (74 loc) · 1.98 KB
/
DFS.java
File metadata and controls
89 lines (74 loc) · 1.98 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.Queue;
/**
*
* @author miqdad
*/
class Node {
int value;
int index; // represent index of node
boolean isVisited;
ArrayList<Node> neighbor;
public Node(int index, int value) {
this.index = index;
this.value = value;
this.neighbor = new ArrayList<Node>();
this.isVisited = false;
}
public void addNeighbor(Node node) {
this.neighbor.add(node);
}
}
class Graph {
int totalNode;
Node[] nodes;
public Graph(int totalNode) {
this.totalNode = totalNode;
nodes = new Node[totalNode];
for (int i = 0; i < totalNode; i++) {
int value = (int) (Math.random() * 100); // gives random value to node
nodes[i] = new Node(i, value);
}
}
public void addEdge(int s, int d) { // index node
// add neighbor each other
nodes[s].addNeighbor(nodes[d]);
nodes[d].addNeighbor(nodes[s]);
}
public void initDFS() {
Node root = nodes[0];
DFS(root);
}
public void DFS(Node node) {
if (!nodes[node.index].isVisited) {
System.out.print(node.value + " ");
node.isVisited = true;
}
for (Node n : node.neighbor) {
if(!n.isVisited){
DFS(n);
}
}
}
}
public class DFS {
public static void main(String[] args){
Graph graph = new Graph(10); // 10 nodes in this graph
for(Node n : graph.nodes){
System.out.printf("Node index %d has value %d\n", n.index, n.value);
}
graph.addEdge(0, 1);
graph.addEdge(0, 2);
graph.addEdge(0, 3);
graph.addEdge(1, 4);
graph.addEdge(1, 5);
graph.addEdge(2, 6);
graph.addEdge(2, 7);
graph.addEdge(3, 8);
graph.addEdge(3, 9);
graph.addEdge(1, 7);
graph.initDFS();
System.out.println("");
}
}