输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点),返回结果为复制后复杂链表的head。(注意,输出结果中请不要返回参数中的节点引用,否则判题程序会直接返回空)
import java.util.HashMap;
/**
* @author Joeson Chan
*/
public class Solution {
private HashMap<RandomListNode, RandomListNode> map = new HashMap<RandomListNode, RandomListNode>();
public RandomListNode Clone(RandomListNode pHead)
{
if(null == pHead){
return null;
}
return clone1(pHead);
}
private RandomListNode clone1(RandomListNode node){
if(null == node){
return null;
}
if(map.containsKey(node)){
return map.get(node);
}
RandomListNode result = new RandomListNode(node.label);
map.put(node, result);
result.next = clone1(node.next);
result.random = clone1(node.random);
return result;
}
}