1. 递归解法:
class ListNode:
    def __init__(self, val=0, next=None):
        self.val = val
        self.next = next

def mergeTwoLists(l1, l2):
    if not l1:
        return l2
    if not l2:
        return l1
    if l1.val < l2.val:
        l1.next = mergeTwoLists(l1.next, l2)
        return l1
    else:
        l2.next = mergeTwoLists(l1, l2.next)
        return l2
  1. 迭代解法:
def mergeTwoLists(l1, l2):
    dummy = ListNode(0)
    curr = dummy
    while l1 and l2:
        if l1.val < l2.val:
            curr.next = l1
            l1 = l1.next
        else:
            curr.next = l2
            l2 = l2.next
        curr = curr.next
    curr.next = l1 or l2
    return dummy.next
  1. 使用队列解法:
import queue

def mergeTwoLists(l1, l2):
    q = queue.Queue()
    while l1:
        q.put(l1.val)
        l1 = l1.next
    while l2:
        q.put(l2.val)
        l2 = l2.next
    dummy = ListNode(0)
    curr = dummy
    while not q.empty():
        curr.next = ListNode(q.get())
        curr = curr.next
    return dummy.next