package leetcode;
import java.util.HashMap;
public class offer_35 {
     public Node copyRandomList(Node head) {
         
         //防止出现空链表
         if(head==null) {
             return null;
         }
         //哈希表法
         HashMap<Node, Node> map=new HashMap<Node, Node>();
         Node node=head;
         while(node!=null) {
             //map中存入每个节点及其复制的节点
             map.put(node, new Node(node.val));
             node=node.next;
         }
         node=head;
         Node newHead=map.get(head);
         while(node!=null) {
             //将node.next对应的value与拷贝到当前复制节点的next
             map.get(node).next=map.get(node.next);
            //将node.random对应的value与拷贝到当前复制节点的random
             map.get(node).random=map.get(node.random);
             node=node.next;
         }
         return newHead;
     }
}