```
class Solution(object):
def addTwoNumbers(self, l1, l2, carry=0):
"""
:type l1: ListNode
:type l2: ListNode
:rtype: ListNode
"""
if not l1 and not l2:
return None if not carry else ListNode(1)
l1 = l1 or ListNode(0)
l2 = l2 or ListNode(0)
value = l1.val + l2.val + carry
carry = 1 if value > 9 else 0
node = ListNode(value % 10)
node.next = self.addTwoNumbers(l1.next, l2.next, carry=carry)
return node
```