# Definition for singly-linked list.
# class ListNode:
# def __init__(self, val=0, next=None):
# self.val = val
# self.next = next
class Solution:
def mergeNodes(self, head: Optional[ListNode]) -> Optional[ListNode]:
lastZeroNode = None
total = 0
def travel(node):
nonlocal lastZeroNode, total
if node:
if node.val == 0:
if lastZeroNode:
lastZeroNode.val = total
lastZeroNode.next = node.next
lastZeroNode = node.next
else:
lastZeroNode = node
# Reset total at every zero
total = 0
# Add to total
total += node.val
# Go to next node
travel(node.next)
travel(head)
return head
return head