struct ListNode* deleteDuplicates(struct ListNode* head) { if (head == NULL) return NULL; if (head->next && head->val == head->next->val) { /* Remove all duplicate numbers */ while (head->next && head->val == head->next->val) { head = head -> next; } return deleteDuplicates(head->next); } else { head->next = deleteDuplicates(head->next); } return head; }