diff --git a/problems/0206.翻转链表.md b/problems/0206.翻转链表.md index ef2664eb..0a8b3622 100644 --- a/problems/0206.翻转链表.md +++ b/problems/0206.翻转链表.md @@ -96,6 +96,26 @@ public: }; ``` +我们可以发现,上面的递归写法和双指针法实质上都是从前往后翻转指针指向,其实还有另外一种与双指针法不同思路的递归写法:从后往前翻转指针指向。 + +具体代码如下(带详细注释): + +```c++ +class Solution { +public: + ListNode* reverseList(ListNode* head) { + // 如果链表只有一个节点,返回自身 + if (head->next == NULL) return head; + // 递归调用,翻转第二个节点开始往后的链表 + ListNode *last = reverseList(head->next); + // 翻转头节点与第二个节点的指向 + head->next->next = head; + // 此时的 head 节点为尾节点,next 需要指向 NULL + head->next = NULL; + return last; + } +}; +``` ## 其他语言版本