思路
採用遞歸的方式進行求解。
先找遞歸終止的條件:沒有交換的時候就遞歸終止,即當鏈表只剩一個節點或者沒有節點的時候。
找返回值:因爲是兩兩交換,所以遞歸的每一層返回的都是已經交換完成的鏈表。
每層遞歸要做的事情:每一層可以保存兩個節點和,我們要做的事就是交換它兩的位置:,那麼爲了讓每一次遞歸返回的鏈表連接起來,那麼還需要做的是: 上一次遞歸返回的結果。
具體執行過程如下
代碼
package leetcode.problem24;
import leetcode.ListNode;
class Solution {
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;
}
}