This is my simple recursive code.

```
class Solution {
public:
RandomListNode *copyRandomList(RandomListNode *head) {
if(!head) return head;
RandomListNode *newnode = new RandomListNode(head->label);
if(head->random)
newnode->random = new RandomListNode(head->random->label);
newnode->next = copyRandomList(head->next);
return newnode;
}
};
```