两两合并节点,头结点的两个节点合并后,剩下的又可以转化为两两合并的子问题,所以递归求解即可。
public ListNode swapPairs(ListNode head) {
if(head==null||head.next==null) {
return head;
}
ListNode left=head;
ListNode right=head.next;
left.next=swapPairs(right.next);
right.next=left;
return right;
}