@@ -40,14 +40,14 @@ class graph {
40
40
}
41
41
delete this . adjacencyList [ vertex ] ;
42
42
}
43
- depthfirst_traversal ( startNode ) {
44
-
43
+ depthfirst_traversal_recursive ( startNode ) {
45
44
const results = [ ] ;
46
45
const visited_vertices = { } ;
47
46
const adjacencyList = this . adjacencyList ;
48
47
49
48
function dfs ( vertex ) {
50
- if ( ! vertex ) { //if vertex is empty
49
+ if ( ! vertex ) {
50
+ //if vertex is empty
51
51
return null ;
52
52
}
53
53
visited_vertices [ vertex ] = true ;
@@ -58,16 +58,35 @@ class graph {
58
58
// dfs(v);
59
59
// }
60
60
// } //second way:
61
- adjacencyList [ vertex ] . forEach ( neighbor => {
61
+ adjacencyList [ vertex ] . forEach ( ( neighbor ) => {
62
62
if ( ! visited_vertices [ neighbor ] ) {
63
63
return dfs ( neighbor ) ;
64
64
}
65
- } )
65
+ } ) ;
66
66
}
67
67
dfs ( startNode ) ;
68
68
console . log ( visited_vertices ) ;
69
69
return results ;
70
70
}
71
+ depthfirst_traversal_iterative ( startNode ) {
72
+ const stack = [ startNode ] ;
73
+ const visited_vertices = { } ;
74
+ const result = [ ] ;
75
+ let currentVertex ;
76
+ visited_vertices [ startNode ] = true ;
77
+ while ( stack . length ) {
78
+ console . log ( stack ) ;
79
+ currentVertex = stack . pop ( ) ;
80
+ result . push ( currentVertex ) ;
81
+ this . adjacencyList [ currentVertex ] . forEach ( ( neighbor ) => {
82
+ if ( ! visited_vertices [ neighbor ] ) {
83
+ visited_vertices [ neighbor ] = true ;
84
+ stack . push ( neighbor ) ;
85
+ }
86
+ } ) ;
87
+ }
88
+ return result ;
89
+ }
71
90
}
72
91
73
92
let g = new graph ( ) ;
@@ -98,12 +117,13 @@ g.addVertex("D");
98
117
g . addVertex ( "E" ) ;
99
118
g . addVertex ( "F" ) ;
100
119
101
- g . addEdge ( 'A' , 'B' ) ;
102
- g . addEdge ( 'A' , 'C' ) ;
103
- g . addEdge ( 'B' , 'D' ) ;
104
- g . addEdge ( 'C' , 'E' ) ;
105
- g . addEdge ( 'D' , 'E' ) ;
106
- g . addEdge ( 'D' , 'F' ) ;
107
- g . addEdge ( 'E' , 'F' ) ;
120
+ g . addEdge ( "A" , "B" ) ;
121
+ g . addEdge ( "A" , "C" ) ;
122
+ g . addEdge ( "B" , "D" ) ;
123
+ g . addEdge ( "C" , "E" ) ;
124
+ g . addEdge ( "D" , "E" ) ;
125
+ g . addEdge ( "D" , "F" ) ;
126
+ g . addEdge ( "E" , "F" ) ;
108
127
console . log ( g . adjacencyList ) ;
109
- console . log ( g . depthfirst_traversal ( 'A' ) ) ;
128
+ // console.log(g.depthfirst_traversal_recursive);
129
+ console . log ( g . depthfirst_traversal_iterative ( "A" ) ) ;
0 commit comments