1def copyRandomList(head):
2 if not head:
3 return None
4 mapping = {}
5 curr = head
6 while curr:
7 mapping[curr] = Node(curr.val)
8 curr = curr.next
9 curr = head
10 while curr:
11 node = mapping[curr]
12 if curr.next:
13 node.next = mapping[curr.next]
14 if curr.random:
15 node.random = mapping[curr.random]
16 curr = curr.next
17 return mapping[head]