class Solution {
public:
ListNode* reverseList(ListNode* head) {
if(head==nullptr||head->next==nullptr)return head;
ListNode *newNode=reverseList(head->next);
head->next->next=head;
head->next=nullptr;
return newNode;
}
};
白话理解:
多层递归直接到链表的最后一个结点(比如说第n个结点),之后跳回上一层第n-1个结点。
然后对第n-1个结点进行指针修改:
head->next->next=head;
head->next=nullptr;
return newNode;
之后,层层返回上一层的递归,做法相同,即可完成链表的反转。
我们不要过于深入递归栈,因为真的比较反人类,这里只需模拟1-2层即可。同时注意终止条件。
如需详细了解可参考: