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};