Clone Graph
2015-03-16 16:04
260 查看
Clone Graph
问题:
Clone an undirected graph. Each node in the graph contains a
思路:
dfs 或者 bfs
我的代码1:(dfs)
View Code
学习之处:
无论是DFS和BFS写的过程中都出现了死循环的问题,纠结而言是因为对于节点1 有邻居2,3 HashMap里面便有了(1,**)(2,**),(3,**),对于节点2 有邻居2 则我们不需要进一步的访问(进一步的访问是指对于BFS加入到Queue中,对于DFS是下一步的递归),仅仅需要加入到Neighbor中就可以了。
问题:
Clone an undirected graph. Each node in the graph contains a
labeland a list of its
neighbors.
思路:
dfs 或者 bfs
我的代码1:(dfs)
public class Solution { public UndirectedGraphNode cloneGraph(UndirectedGraphNode node) { if(node == null) return null; HashMap<UndirectedGraphNode,UndirectedGraphNode> hm = new HashMap<UndirectedGraphNode,UndirectedGraphNode>(); Queue<UndirectedGraphNode> queue = new LinkedList<UndirectedGraphNode>(); queue.offer(node); UndirectedGraphNode rst = new UndirectedGraphNode(node.label); hm.put(node, rst); while(!queue.isEmpty()) { UndirectedGraphNode first = queue.poll(); UndirectedGraphNode ugn = hm.get(first); for(UndirectedGraphNode tmp : first.neighbors) { if(!hm.containsKey(tmp)) { UndirectedGraphNode newNode = new UndirectedGraphNode(tmp.label); hm.put(tmp,newNode); queue.offer(tmp); } ugn.neighbors.add(hm.get(tmp)); } } return rst; } }
View Code
学习之处:
无论是DFS和BFS写的过程中都出现了死循环的问题,纠结而言是因为对于节点1 有邻居2,3 HashMap里面便有了(1,**)(2,**),(3,**),对于节点2 有邻居2 则我们不需要进一步的访问(进一步的访问是指对于BFS加入到Queue中,对于DFS是下一步的递归),仅仅需要加入到Neighbor中就可以了。
相关文章推荐
- Java for LeetCode 133 Clone Graph
- [leetcode] Clone Graph
- Clone Graph
- [leetcode-133]Clone Graph(java)
- Clone Graph [Leetcode解题报告]
- LeetCode:Clone Graph
- Clone Graph [LeetCode]
- Leetcode: Clone Graph
- Leetcode: Clone Graph
- 图的深拷贝 Clone Graph
- 算法(六)Clone Graph
- leetCode解题报告之Clone Graph
- leetcode之Clone Graph
- LeetCode_Clone Graph
- Clone Graph
- Clone Graph leetcode java(DFS and BFS 基础)
- [LeetCode] Clone Graph
- Clone Graph
- leetcode [Clone Graph] Java
- [LeetCode] Clone Graph