From 76dab7ff7b6f1f778b60411d122bb972fc1099b2 Mon Sep 17 00:00:00 2001 From: Tapajyoti Bose Date: Wed, 15 Jul 2020 12:31:27 +0530 Subject: [PATCH] Added DFS (Iterative) - Graph --- Graphs/DepthFirstSearchIterative.js | 51 +++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 Graphs/DepthFirstSearchIterative.js diff --git a/Graphs/DepthFirstSearchIterative.js b/Graphs/DepthFirstSearchIterative.js new file mode 100644 index 0000000000..3eb9c1f832 --- /dev/null +++ b/Graphs/DepthFirstSearchIterative.js @@ -0,0 +1,51 @@ +class GraphUnweightedUndirected { + // Unweighted Undirected Graph class + constructor () { + this.connections = {} + } + + addNode (node) { + // Function to add a node to the graph (connection represented by set) + this.connections[node] = new Set() + } + + addEdge (node1, node2) { + // Function to add an edge (adds the node too if they are not present in the graph) + if (!(node1 in this.connections)) { this.addNode(node1) } + if (!(node2 in this.connections)) { this.addNode(node2) } + this.connections[node1].add(node2) + this.connections[node2].add(node1) + } + + DFSIterative (node, value) { + // DFS Function to search if a node with the given value is present in the graph + const stack = [node] + const visited = new Set() + while (stack.length > 0) { + const currNode = stack.pop() + // if the current node contains the value being searched for, true is returned + if (currNode === value) { return true } + // adding the current node to the visited set + visited.add(currNode) + // adding neighbours in the stack + for (const neighbour of this.connections[currNode]) { + if (!visited.has(neighbour)) { + stack.push(neighbour) + } + } + } + return false + } +} + +function main () { + const graph = new GraphUnweightedUndirected() + graph.addEdge(1, 2) + graph.addEdge(2, 3) + graph.addEdge(2, 4) + graph.addEdge(3, 5) + console.log(graph.DFSIterative(5, 1)) + console.log(graph.DFSIterative(5, 100)) +} + +main() 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