24. 两两交换链表中的节点
示例:
给定 1->2->3->4
, 你应该返回 2->1->4->3
.
分析:两两递归,每两个节点当一个整体,进行交换,前个合并节点指向下一个合并节点的前一个节点。
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode(int x) {val = x;}
* }
*/
class Solution {public ListNode swapPairs(ListNode head) {
// 如果是 null 节点或者单个节点直接返回 head
if(head==null||head.next==null){return head;}
// 拿到后节点
ListNode next=head.next;
// 把前节点的指针指向下个合并节点的前节点
head.next=swapPairs(next.next);
// 节点调换
next.next=head;
// 返回调换后的节点
return next;
}
}