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