leetcode 24 - 两两交换链表中的节点(递归解法)

题目

24. 两两交换链表中的节点

题解

整个过程都是不停地交换节点,因此可以尝试通过递归来解决。

递归解法要先搞清以下三个内容

  1. 返回值
  2. 调用单元做了什么
  3. 终止条件

在本题中:

  1. 返回值:交换完成的子链表head
  2. 调用单元做了什么:设需要交换的两个点为 head 和 next,head 连接后面交换完成的子链表,next 连接 head,完成交换
  3. 终止条件:head为空指针或者next为空指针,也就是当前无节点或者只有一个节点,无法进行交换
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;
}

参考

画解算法:24. 两两交换链表中的节点

发表地址

博客园:leetcode 24 - 两两交换链表中的节点(递归解法)

posted @ 2019-08-05 10:09  狸猫副园长  阅读(954)  评论(0编辑  收藏  举报