From b02a5af03723959f708572cc8bd632cf53fbdcb1 Mon Sep 17 00:00:00 2001 From: Shrivali Dutt <149003676+shrivalidutt@users.noreply.github.com> Date: Wed, 9 Oct 2024 03:50:19 +0530 Subject: [PATCH 1/2] Update DepthFirstSearchIterative.js Added a check at the start of DFSIterative to handle the case where the starting node doesn't exist. This prevents runtime errors and informs the user. --- Graphs/DepthFirstSearchIterative.js | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/Graphs/DepthFirstSearchIterative.js b/Graphs/DepthFirstSearchIterative.js index a033c0bcad..71d6e2039e 100644 --- a/Graphs/DepthFirstSearchIterative.js +++ b/Graphs/DepthFirstSearchIterative.js @@ -23,6 +23,11 @@ class GraphUnweightedUndirected { DFSIterative(node, value) { // DFS Function to search if a node with the given value is present in the graph + if (!(node in this.connections)) { // Changed 'startNode' to 'node' + console.log(`Start node ${node} does not exist in the graph.`); // Updated the log message + return false; // Early return if the node doesn't exist + } + const stack = [node] const visited = new Set() while (stack.length > 0) { From 947b2b99926d007bbfc4b1044d258c40a5352447 Mon Sep 17 00:00:00 2001 From: Shrivali Dutt <149003676+shrivalidutt@users.noreply.github.com> Date: Wed, 9 Oct 2024 04:01:03 +0530 Subject: [PATCH 2/2] Update DepthFirstSearchIterative.js --- Graphs/DepthFirstSearchIterative.js | 61 ++++++++++++++--------------- 1 file changed, 30 insertions(+), 31 deletions(-) diff --git a/Graphs/DepthFirstSearchIterative.js b/Graphs/DepthFirstSearchIterative.js index 71d6e2039e..20d589df39 100644 --- a/Graphs/DepthFirstSearchIterative.js +++ b/Graphs/DepthFirstSearchIterative.js @@ -1,62 +1,61 @@ class GraphUnweightedUndirected { // Unweighted Undirected Graph class constructor() { - this.connections = {} + this.connections = {}; } addNode(node) { // Function to add a node to the graph (connection represented by set) - this.connections[node] = new 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) + this.addNode(node1); } if (!(node2 in this.connections)) { - this.addNode(node2) + this.addNode(node2); } - this.connections[node1].add(node2) - this.connections[node2].add(node1) + 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 - if (!(node in this.connections)) { // Changed 'startNode' to 'node' - console.log(`Start node ${node} does not exist in the graph.`); // Updated the log message - return false; // Early return if the node doesn't exist - } - - const stack = [node] - const visited = new Set() + if (!(node in this.connections)) { // Changed 'startNode' to 'node' + console.log(`Start node ${node} does not exist in the graph.`); // Updated the log message + return false; // Early return if the node doesn't exist + } + + 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 + const currNode = stack.pop(); + // If the current node contains the value being searched for, true is returned if (currNode === value) { - return true + return true; } - // adding the current node to the visited set - visited.add(currNode) - // adding neighbours in the stack + // Adding the current node to the visited set + visited.add(currNode); + // Adding neighbors in the stack for (const neighbour of this.connections[currNode]) { if (!visited.has(neighbour)) { - stack.push(neighbour) + stack.push(neighbour); } } } - return false + return false; } } -export { GraphUnweightedUndirected } - -// Example +export { GraphUnweightedUndirected }; -// const graph = new GraphUnweightedUndirected() -// graph.addEdge(1, 2) -// graph.addEdge(2, 3) -// graph.addEdge(2, 4) -// graph.addEdge(3, 5) -// graph.DFSIterative(5, 1) -// graph.DFSIterative(5, 100) +// Example usage +// 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)); // Should print true or false +// console.log(graph.DFSIterative(5, 100)); // Should print false