/*
// 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 {
//key是要克隆的节点,value是new出来的节点,这样设计是因为递归每一次传入的是原来的node的邻居,所以key也应该是原来的
HashMap<Node,Node> vals;
public Node cloneGraph(Node node) {
if (node == null)
return null;
//dfs克隆node
vals = new HashMap<>();
return dfs(node);
}
private Node dfs(Node node){
//首先新生成
if (vals.containsKey(node)) {
return vals.get(node);
}
Node root = new Node(node.val);
vals.put(node,root);
//遍历node的neighbors
for (Node neighbor : node.neighbors) {
root.neighbors.add(dfs(neighbor));
}
return root;
}
}
leetcode 133克隆图
最新推荐文章于 2024-10-01 05:04:32 发布