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

lsq_2019
17 声望0 粉丝