1.题目
给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换)。
2.示例
输入:head = [1,2,3,4] 输出:[2,1,4,3]
3.解答
public ListNode swapPairs(ListNode head) {
//退出递归的条件,头节点为空或者只有一个头节点,则不用交互直接返回
if(Objects.isNull(head)||Objects.isNull(head.next)){
return head;
}
//得到头结点的下一个节点
ListNode next = head.next;
//获取到第三个节点
ListNode third = next.next;
//第二个节点指向第一个节点后,变为头节点
next.next = head;
//头节点指向下一个节点。下一个节点具体是谁,应是由第三个节点作为头结点转换过返回的节点
head.next = swapPairs(third);
//每次函数返回的节点肯定都是此次调用的第二个节点
return next;
}