给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。

你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。

 

示例:

给定 1->2->3->4, 你应该返回 2->1->4->3.

 

思路:

直接递归就完事了,递归返回给上一层递归的值应该是已经交换完成后的子链表。

public 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;
	}