链表中的节点两两交换(LeetCode--24.两两交换链表中的节点)

10月30日面试题

题目

解析

递归实现。给定一个单向链表,首先交换最前面的两个节点,然后递归执行第三个节点开始的子链表,返回的结果连接到交换后的前两节点后面,组成交换后的链表,最终返回链表的第一个节点。

代码

public Node swapPairs(Node head){
    //如果null或者只有一个节点,直接返回
    if(null == head || null == head.next){
        return head;
    }
    Node first = head;
    Node second = head.next;
    head = second.next;
    //交换两个节点
    second.next = first;
    first.next = swapPairs(head);

    return second;
}

推荐阅读更多精彩内容