1. 程式人生 > >【leetcode】133.(Medium)Clone Graph

【leetcode】133.(Medium)Clone Graph

解題思路:

解法來自題目後面討論區

DFS
維護一個全域性變數map,鍵為節點的值,值為這個新建的節點
從當前節點出發,如果下一鄰節點是map中存在的節點就繼續深搜,否則直接將當前節點加入鄰節點表,然後繼續建立下一個鄰節點。


提交程式碼:

class Solution {
	Map<Integer,UndirectedGraphNode>map=new HashMap<>();
	
    public UndirectedGraphNode cloneGraph(UndirectedGraphNode node) {
    	if(
node==null) return null; if(map.containsKey(node.label)) return map.get(node.label); UndirectedGraphNode newNode=new UndirectedGraphNode(node.label); map.put(node.label, newNode); for(UndirectedGraphNode nd : node.neighbors) { newNode.neighbors.add(cloneGraph(nd)
); } return newNode; } }

提交程式碼:
在這裡插入圖片描述