'''
24. 两两交换链表中的节点
给定一个链表，两两交换其中相邻的节点，并返回交换后的链表。
你不能只是单纯的改变节点内部的值，而是需要实际的进行节点交换。

示例 1：
输入：head = [1,2,3,4]
输出：[2,1,4,3]
示例 2：
输入：head = []
输出：[]
示例 3：
输入：head = [1]
输出：[1]
'''
import ListNode


class Solution:
    def swapPairs(self, head: ListNode) -> ListNode:
        if not head or head.next:
            return head
        newHead = head.next
        head.next = self.swapPairs(newHead.next)
        newHead.next = head
        return newHead


if __name__ == '__main__':
    s = Solution()
    a = s.swapPairs(head=[1, 2, 3, 4])
    print(a)
