class Solution {
public:
ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) {
int len1=0,len2=0;
ListNode *node1=l1,*node2=l2;
while(node1) {
++len1;
node1=node1->next;
}
while(node2) {
++len2;
node2=node2->next;
}
node1=l1;node2=l2;
while(len1>len2) {
ListNode *node=new ListNode(0);
node->next=node2;
node2=node;
++len2;
}
while(len2>len1) {
ListNode *node=new ListNode(0);
node->next=node1;
node1=node;
++len1;
}
int k=helper(node1,node2);
if(k) {
ListNode* node=new ListNode(1);
node->next=node1;
node1=node;
}
return node1;
}
int helper(ListNode* l1,ListNode* l2) {
if(!l1||!l2) return 0;
int k=0;
k=helper(l1->next,l2->next);
int sum=l1->val+l2->val+k;
if(sum>9) {
l1->val=sum-10;
return 1;
}
else {
l1->val=sum;
return 0;
}
}
};