Mark As Completed Discussion

Implementation for DFS

The sample code for Preorder Traversal DFS is as follows:

1let graph;
2
3const numOfNodes = 7;
4let visited = new Array(numOfNodes);
5
6const dfs = (node) => {
7  const stack = [];
8  stack.push(node);
9
10  while (stack.length) {
11    node = stack.pop();
12
13    if (!visited[node]) {
14      visited[node] = true;
15
16      console.log(`visiting ${node}`);
17      for (let j = 0; j < graph[node].length; j++) {
18        if (graph[node][j] === 1) {
19          stack.push(j);
20        }
21      }
22    }
23  }
24};
25
26// helper methods
27
28const createGraph = (numOfNodes) => {
29  graph = new Array(numOfNodes);
30  for (let i = 0; i < graph.length; i++) {
31    graph[i] = new Array(numOfNodes);
32  }
33
34  for (let i = 0; i < graph.length; i++) {
35    for (let j = 0; j < graph[i].length; j++) {
36      graph[i][j] = 0;
37    }
38  }
39};
40
41const printGraph = () => {
42  let row = " ";
43  let i, j;
44  for (i = 0; i < graph.length; i++) {
45    for (j = 0; j < graph[i].length; j++) {
46      row += graph[i][j];
47      row += " ";
48
49      if (j == graph.length - 1) {
50        console.log(row);
51        row = " ";
52      }
53    }
54  }
55};
56
57const addEdge = (a, b) => {
58  for (let i = 0; i < graph.length; i++) {
59    for (let j = 0; j < graph[i].length; j++) {
60      if (i === a && j === b) {
61        graph[i][j] = 1;
62        graph[j][i] = 1;
63      }
64    }
65  }
66};