File tree Expand file tree Collapse file tree 1 file changed +37
-0
lines changed Expand file tree Collapse file tree 1 file changed +37
-0
lines changed Original file line number Diff line number Diff line change
1
+ /**
2
+ * BFSλ₯Ό μ¬μ©ν κ·Έλν 볡μ
3
+ * @param {_Node } node
4
+ * @return {_Node }
5
+ */
6
+ var cloneGraph = function ( node ) {
7
+ if ( ! node ) return null ;
8
+
9
+ // μλ³Έ λ
Έλμ 볡μ λ λ
Έλλ₯Ό λ§€ννλ ν΄μλ§΅
10
+ const cloned = new Map ( ) ;
11
+
12
+ // BFSλ₯Ό μν ν
13
+ const queue = [ node ] ;
14
+
15
+ // μμ λ
Έλ 볡μ
16
+ cloned . set ( node , new _Node ( node . val ) ) ;
17
+
18
+ while ( queue . length > 0 ) {
19
+ const currentNode = queue . shift ( ) ;
20
+
21
+ // νμ¬ λ
Έλμ λͺ¨λ μ΄μλ€μ μ²λ¦¬
22
+ for ( let neighbor of currentNode . neighbors ) {
23
+ // μ΄μμ΄ μμ§ λ³΅μ λμ§ μμλ€λ©΄
24
+ if ( ! cloned . has ( neighbor ) ) {
25
+ // μλ‘μ΄ λ
Έλ μμ±νκ³ λ§΅μ μ μ₯
26
+ cloned . set ( neighbor , new _Node ( neighbor . val ) ) ;
27
+ // νμ μΆκ°νμ¬ λμ€μ μ²λ¦¬
28
+ queue . push ( neighbor ) ;
29
+ }
30
+
31
+ // 볡μ λ νμ¬ λ
Έλμ μ΄μ 리μ€νΈμ 볡μ λ μ΄μ μΆκ°
32
+ cloned . get ( currentNode ) . neighbors . push ( cloned . get ( neighbor ) ) ;
33
+ }
34
+ }
35
+
36
+ return cloned . get ( node ) ;
37
+ } ;
You canβt perform that action at this time.
0 commit comments