133. Clone Graph

来源:互联网 发布:windows无法删除密码 编辑:程序博客网 时间:2024/05/29 12:29

Clone an undirected graph. Each node in the graph contains a label and a list of its neighbors.

OJ’s undirected graph serialization:
Nodes are labeled uniquely.

We use # as a separator for each node, and , as a separator for node label and each neighbor of the node.
As an example, consider the serialized graph {0,1,2#1,2#2,2}.

The graph has a total of three nodes, and therefore contains three parts as separated by #.

First node is labeled as 0. Connect node 0 to both nodes 1 and 2.
Second node is labeled as 1. Connect node 1 to node 2.
Third node is labeled as 2. Connect node 2 to node 2 (itself), thus forming a self-cycle.
Visually, the graph looks like the following:

       1      / \     /   \    0 --- 2         / \         \_/

思路:DFS

 /** * Definition for undirected graph. * class UndirectedGraphNode { *     int label; *     List<UndirectedGraphNode> neighbors; *     UndirectedGraphNode(int x) { label = x; neighbors = new ArrayList<UndirectedGraphNode>(); } * }; */public class Solution {    Map<UndirectedGraphNode, UndirectedGraphNode> map = new HashMap<UndirectedGraphNode, UndirectedGraphNode>();    public UndirectedGraphNode cloneGraph(UndirectedGraphNode node) {        if (node == null)            return null;        if (map.containsKey(node))            return map.get(node);        UndirectedGraphNode newHead = new UndirectedGraphNode(node.label);        map.put(node, newHead);        for (UndirectedGraphNode aNeighbor : node.neighbors)            newHead.neighbors.add(cloneGraph(aNeighbor));        return newHead;    }}
阅读全文
'); })();
0 0
原创粉丝点击
热门IT博客
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 平江路历史街区旅游 平江路历史街区 东关街历史街区旅游 月河历史街区 南京1912街区 热血街区极恶王在线播放 热血街区在线播放 热血街区第二季 热血街区第一季在线 月河历史街区旅游 老门东历史街区 暴力街区观看 平江历史街区 五店市传统街区 从热血街区到全球首富 双东历史街区旅游 热血街区正确观看顺序 热血街区2天空尽头 热血街区1在线高清 青果巷历史文化街区 常州运河五号创意街区 常州运河五号创意街区旅游 街店 街里 同街 邻街 亭街 街堡 谷街 街街 达叔射街 黑山街 叶亚来街 达叔射街吧 街篮吧 黑山街吧 逗吧逗把街 街球交易吧 街吧奶茶 街球吧 韩庄八街吧