Not a member of GistPad yet?
Sign Up,
it unlocks many cool features!
- /*
- Definition for a Node.
- class Node {
- public int val;
- public List<Node> neighbors;
- public Node() {
- val = 0;
- neighbors = new ArrayList<Node>();
- }
- public Node(int _val) {
- val = _val;
- neighbors = new ArrayList<Node>();
- }
- public Node(int _val, ArrayList<Node> _neighbors) {
- val = _val;
- neighbors = _neighbors;
- }
- }
- */
- class Solution {
- public Node cloneGraph(Node node) {
- // Create a map to store original nodes -> cloned nodes.
- Map<Node, Node> clonedMap = new HashMap<>();
- return dfs(node, clonedMap);
- }
- public Node dfs(Node node, Map<Node, Node> clonedMap)
- {
- if(node == null)
- return null;
- if(clonedMap.containsKey(node))
- return clonedMap.get(node);
- // Create a new node with the same value.
- Node newNode = new Node(node.val);
- // Store it in the map.
- clonedMap.put(node, newNode);
- for(Node u : node.neighbors)
- {
- // Recursively clone all neighbors and add them to the clone’s neighbor list.
- Node nextNode = dfs(u, clonedMap);
- newNode.neighbors.add(nextNode);
- }
- return newNode;
- }
- }
RAW Paste Data
Copied
