leetcode 24 - 两两交换链表中的节点(递归解法)
题目
题解
整个过程都是不停地交换节点,因此可以尝试通过递归来解决。
递归解法要先搞清以下三个内容
- 返回值
- 调用单元做了什么
- 终止条件
在本题中:
- 返回值:交换完成的子链表head
- 调用单元做了什么:设需要交换的两个点为 head 和 next,head 连接后面交换完成的子链表,next 连接 head,完成交换
- 终止条件:head为空指针或者next为空指针,也就是当前无节点或者只有一个节点,无法进行交换
ListNode* swapPairs(ListNode* head) {
if (head == NULL || head->next == NULL) {
return head;
}
ListNode *next = head->next;
head->next = swapPairs(next->next);
next->next = head;
return next;
}
参考
发表地址
水平有限,欢迎各位批评指正~