diff --git a/Graphs/DepthFirstSearchIterative.js b/Graphs/DepthFirstSearchIterative.js index a033c0bcad..20d589df39 100644 --- a/Graphs/DepthFirstSearchIterative.js +++ b/Graphs/DepthFirstSearchIterative.js @@ -1,57 +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 - 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