File tree Expand file tree Collapse file tree 1 file changed +42
-0
lines changed Expand file tree Collapse file tree 1 file changed +42
-0
lines changed Original file line number Diff line number Diff line change
1
+ /*
2
+ // Definition for a Node.
3
+ class Node {
4
+ public int val;
5
+ public List<Node> neighbors;
6
+ public Node() {
7
+ val = 0;
8
+ neighbors = new ArrayList<Node>();
9
+ }
10
+ public Node(int _val) {
11
+ val = _val;
12
+ neighbors = new ArrayList<Node>();
13
+ }
14
+ public Node(int _val, ArrayList<Node> _neighbors) {
15
+ val = _val;
16
+ neighbors = _neighbors;
17
+ }
18
+ }
19
+ */
20
+
21
+ class Solution {
22
+ public Node cloneGraph (Node node ) {
23
+ Map <Integer , Node > nodeMap = new HashMap <>();
24
+ if (node == null ) return null ;
25
+ boolean [] visited = new boolean [101 ];
26
+ dfsHelper (nodeMap , node , visited );
27
+ return nodeMap .get (1 );
28
+ }
29
+
30
+ private void dfsHelper (Map <Integer , Node > map , Node node , boolean [] visited ) {
31
+ if (!map .containsKey (node .val )) {
32
+ map .put (node .val , new Node (node .val ));
33
+ }
34
+ visited [node .val ] = true ;
35
+ Node cur = map .get (node .val );
36
+ for (Node adjacent : node .neighbors ) {
37
+ map .putIfAbsent (adjacent .val , new Node (adjacent .val ));
38
+ cur .neighbors .add (map .get (adjacent .val ));
39
+ if (!visited [adjacent .val ]) dfsHelper (map , adjacent , visited );
40
+ }
41
+ }
42
+ }
You can’t perform that action at this time.
0 commit comments