使用递归解答
一个关于递归的博客链接
- 终止条件:当链表为空或者只剩下一个元素时
- 返回值:返回给上一层递归的值应该是交换完成后的子链表
- 用
head
表示原始链表的头节点,新链表的第二个节点,用newHead
表示新链表的头节点,原始链表的第二个节点。则原始链表的其余节点的头节点为newHead.next
,令head.next = swapPairs(newHead.next)
表示将其余节点两两交换,交换后的新头节点head
为下一个节点,然后令newHead.next = head
,即完成了所有的节点交换,最后返回新的链表的头节点newHead
代码实现
class Solution:
def swapPairs(self, head: ListNode) -> ListNode:
if not head or not head.next:
return head
newHead = head.next
head.next = self.swapPairs(newHead.next)
newHead.next =head
return newHead