Skip to content

Commit 9120a77

Browse files
new file: src/CloneGraph.java
1 parent a43e24e commit 9120a77

File tree

1 file changed

+50
-0
lines changed

1 file changed

+50
-0
lines changed

src/CloneGraph.java

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
import java.util.*;
2+
3+
class Node {
4+
public int val;
5+
public List<Node> neighbors;
6+
7+
public Node() {
8+
val = 0;
9+
neighbors = new ArrayList<Node>();
10+
}
11+
12+
public Node(int _val) {
13+
val = _val;
14+
neighbors = new ArrayList<Node>();
15+
}
16+
17+
public Node(int _val, ArrayList<Node> _neighbors) {
18+
val = _val;
19+
neighbors = _neighbors;
20+
}
21+
}
22+
23+
public class CloneGraph {
24+
private Map<Node, Node> visited = new HashMap<>();
25+
26+
public Node cloneGraph(Node node) {
27+
if (node == null) return null;
28+
if (visited.containsKey(node)) return visited.get(node);
29+
30+
Node clone = new Node(node.val);
31+
visited.put(node, clone);
32+
33+
for (Node neighbor : node.neighbors) {
34+
clone.neighbors.add(cloneGraph(neighbor));
35+
}
36+
return clone;
37+
}
38+
39+
public static void main(String[] args) {
40+
// Example: Creating a simple graph and cloning it
41+
Node node1 = new Node(1);
42+
Node node2 = new Node(2);
43+
node1.neighbors.add(node2);
44+
node2.neighbors.add(node1);
45+
46+
CloneGraph cg = new CloneGraph();
47+
Node cloned = cg.cloneGraph(node1);
48+
System.out.println("Cloned graph node value: " + cloned.val);
49+
}
50+
}

0 commit comments

Comments
 (0)