Skip to content

Commit b5899d5

Browse files
authored
Added DFS (Recursive) - Graph (TheAlgorithms#228)
1 parent 4534582 commit b5899d5

File tree

1 file changed

+46
-0
lines changed

1 file changed

+46
-0
lines changed

Graphs/DepthFirstSearchRecursive.js

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
class GraphUnweightedUndirected {
2+
// Unweighted Undirected Graph class
3+
constructor () {
4+
this.connections = {}
5+
}
6+
7+
addNode (node) {
8+
// Function to add a node to the graph (connection represented by set)
9+
this.connections[node] = new Set()
10+
}
11+
12+
addEdge (node1, node2) {
13+
// Function to add an edge (adds the node too if they are not present in the graph)
14+
if (!(node1 in this.connections)) { this.addNode(node1) }
15+
if (!(node2 in this.connections)) { this.addNode(node2) }
16+
this.connections[node1].add(node2)
17+
this.connections[node2].add(node1)
18+
}
19+
20+
DFSRecursive (node, value, visited = new Set()) {
21+
// DFS Function to search if a node with the given value is present in the graph
22+
// checking if the searching node has been found
23+
if (node === value) { return true }
24+
// adding the current node to the visited set
25+
visited.add(node)
26+
// calling the helper function recursivly for all unvisited nodes
27+
for (const neighbour of this.connections[node]) {
28+
if (!visited.has(neighbour)) {
29+
if (this.DFSRecursive(neighbour, value, visited)) { return true }
30+
}
31+
}
32+
return false
33+
}
34+
}
35+
36+
function main () {
37+
const graph = new GraphUnweightedUndirected()
38+
graph.addEdge(1, 2)
39+
graph.addEdge(2, 3)
40+
graph.addEdge(2, 4)
41+
graph.addEdge(3, 5)
42+
console.log(graph.DFSRecursive(5, 1))
43+
console.log(graph.DFSRecursive(5, 100))
44+
}
45+
46+
main()

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy