```
public ListNode mergeTwoLists(ListNode l1, ListNode l2) {
if(l1==null && l2==null){
return null;
}else if(l1!=null && l2==null){
return l1;
}else if(l1==null && l2!=null){
return l2;
}else{
if(l1.val < l2.val){
l1.next = mergeTwoLists(l1.next,l2);
return l1;
}else{
l2.next = mergeTwoLists(l1,l2.next);
return l2;
}
}
}
```

Complexity of the problem is O(1) for the best case and the worst case is O(N) where N is the sum of number of nodes in the 2 lists.