LeetCode Java刷题笔记—394. 字符串解码
Posted 刘Java
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode Java刷题笔记—394. 字符串解码相关的知识,希望对你有一定的参考价值。
给你无向 连通 图中一个节点的引用,请你返回该图的 深拷贝(克隆)。
中等难度。使用DFS深度优先遍历即可解决。
public Node cloneGraph( Node node )
if( node == null )
return node;
//hashmap存储新旧节点的对应关系,以及用来区分已克隆和未克隆的节点
HashMap<Node, Node> map = new HashMap<>();
//保存需要进行克隆的节点
LinkedList<Node> queue = new LinkedList<>();
queue.offer( node );
map.put( node, new Node( node.val ) );
/*DFS拷贝*/
while( !queue.isEmpty() )
//取出队列头部节点
Node cur = queue.poll();
//遍历并克隆节点的neighbors
for( Node neighbor : cur.neighbors )
//如果map不包含对应的节点则加入queue,并且克隆并存入map中
if( !map.containsKey( neighbor ) )
queue.offer( neighbor );
map.put( neighbor, new Node( neighbor.val ) );
//设置克隆节点的neighbors
map.get( cur ).neighbors.add( map.get( neighbor ) );
return map.get( node );
以上是关于LeetCode Java刷题笔记—394. 字符串解码的主要内容,如果未能解决你的问题,请参考以下文章