Skip to content

Commit 6935221

Browse files
add: [week-8] clong-graph
1 parent 9c28c2d commit 6935221

File tree

1 file changed

+86
-0
lines changed

1 file changed

+86
-0
lines changed

clone-graph/Solution.java

Lines changed: 86 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,86 @@
1+
import java.util.HashMap;
2+
import java.util.Map;
3+
4+
/*
5+
// Definition for a Node.
6+
class Node {
7+
public int val;
8+
public List<Node> neighbors;
9+
public Node() {
10+
val = 0;
11+
neighbors = new ArrayList<Node>();
12+
}
13+
public Node(int _val) {
14+
val = _val;
15+
neighbors = new ArrayList<Node>();
16+
}
17+
public Node(int _val, ArrayList<Node> _neighbors) {
18+
val = _val;
19+
neighbors = _neighbors;
20+
}
21+
}
22+
*/
23+
class Solution {
24+
public Map<Node, Node> nMap = new HashMap<>();
25+
26+
public Node cloneGraph(Node node) {
27+
if (node == null)
28+
return null;
29+
30+
if (nMap.containsKey(node)) {
31+
return nMap.get(node);
32+
}
33+
34+
Node clone = new Node(node.val);
35+
nMap.put(node, clone);
36+
37+
for (Node nei : node.neighbors) {
38+
clone.neighbors.add(cloneGraph(nei));
39+
}
40+
41+
return clone;
42+
}
43+
}
44+
45+
class WrongSolution {
46+
public Node graph;
47+
public Map<Node, Node> nMap = new HashMap<>();
48+
49+
public Node cloneGraph(Node node) {
50+
if (node == null)
51+
return null;
52+
53+
graph = new Node(node.val);
54+
nMap.put(node, graph);
55+
56+
// print(graph);
57+
58+
return clone(node, graph);
59+
}
60+
61+
public Node clone(Node node, Node cur) {
62+
for (int i = 0; i < node.neighbors.size(); i++) {
63+
Node adj = node.neighbors.get(i);
64+
65+
if (nMap.containsKey(adj)) {
66+
return nMap.get(adj);
67+
}
68+
69+
nMap.put(adj, new Node(adj.val));
70+
cur.neighbors.add(nMap.get(adj));
71+
clone(adj, nMap.get(adj));
72+
}
73+
74+
return cur;
75+
}
76+
77+
public void print(Node node) {
78+
System.out.println("visit " + node.val);
79+
80+
for (int i = 0; i < node.neighbors.size(); i++) {
81+
Node adj = node.neighbors.get(i);
82+
System.out.println("nei " + adj.val);
83+
print(adj);
84+
}
85+
}
86+
}

0 commit comments

Comments
 (0)