File tree Expand file tree Collapse file tree 1 file changed +31
-0
lines changed Expand file tree Collapse file tree 1 file changed +31
-0
lines changed Original file line number Diff line number Diff line change 1+ // Definition for a _Node.
2+ function _Node ( val , neighbors ) {
3+ this . val = val === undefined ? 0 : val ;
4+ this . neighbors = neighbors === undefined ? [ ] : neighbors ;
5+ } ;
6+
7+ /**
8+ * ๊ทธ๋ํ๋ฅผ ๊น์ ๋ณต์ฌํ์ฌ ๋ฐํํ๋ ํจ์
9+ * @param {_Node } node
10+ * @return {_Node }
11+ */
12+ const cloneGraph = function ( node ) {
13+ if ( ! node ) return null ;
14+
15+ function dfs ( node , visited ) {
16+ const current = new _Node ( node . val ) ;
17+ visited . set ( node , current ) ;
18+
19+ node . neighbors . forEach ( ( neighbor ) => {
20+ const clonedNeighbor = visited . has ( neighbor ) ? visited . get ( neighbor ) : dfs ( neighbor , visited ) ;
21+ current . neighbors . push ( clonedNeighbor ) ;
22+ } ) ;
23+
24+ return current ;
25+ }
26+
27+ return dfs ( node , new Map ( ) ) ; // visited: ์๋ณธ ๋
ธ๋๋ฅผ key, ํด๋ก ํ ๋
ธ๋๋ฅผ value๋ก ํ๋ ๋งต
28+ } ;
29+
30+ // ์๊ฐ๋ณต์ก๋: O(V + E) (๋ชจ๋ ๋
ธ๋์ ๊ฐ์ ์ ํ ๋ฒ์ฉ ์ํ)
31+ // ๊ณต๊ฐ๋ณต์ก๋: O(V) (visited ๋งต + ์ฌ๊ท ํธ์ถ ์คํ)
You canโt perform that action at this time.
0 commit comments