Search This Blog

2023/05/12

DFS in node.js

class Graph {

constructor() {
this.vertices = []
this.edges = {}
}

addVertex(vertex) {
this.vertices.push(vertex)
this.edges[vertex] = []
}

addEdge(vertex1, vertex2) {
this.edges[vertex1].push({ "joinedTo": vertex2 })
this.edges[vertex2].push({ "joinedTo": vertex1 })
}

print() {
for (var vertex of this.vertices) {
for (var joined of this.edges[vertex]) {
console.log(vertex + "-->" + joined.joinedTo)
}
}
}

dfs(startVertex, targetVertex) {
var visited = {}
return this.dfsHelper(startVertex, targetVertex, visited)
}

dfsHelper(vertex, targetVertex, visited) {
console.log(vertex)
visited[vertex] = true;
if (vertex == targetVertex) return true

var adjacentVertices = this.edges[vertex]
for (var adjacentVertex of adjacentVertices) {
var neightborVertex = adjacentVertex.joinedTo
if (!visited[neightborVertex]) {
var found = this.dfsHelper(neightborVertex, targetVertex, visited)
if(found){
return true;
}
}
}

return false
}

}





var graph = new Graph()
graph.addVertex(1)
graph.addVertex(2)
graph.addVertex(3)
graph.addVertex(4)
graph.addVertex(5)
graph.addVertex(6)
graph.addVertex(7)
graph.addVertex(8)

graph.addEdge(1, 2)
graph.addEdge(1, 3)
graph.addEdge(2, 4)
graph.addEdge(2, 6)
graph.addEdge(3, 5)
graph.addEdge(3, 8)

var found = graph.dfs(1, 8)
console.log("Found", found)

No comments:

Post a Comment