LeetCode 206 反转链表 - 递归解法
- 构造
json,显然key 是每个节点.
// 先是直接返回的, 找到特例: 5->null 返回还是 5->null
5->null:5->null, //直接返回的
3->4: 更深层次的调用,
2->3: 更深层次的调用
- 如何进行下一层调用. 对于
3->4,reverse(4)返回逆转 以4开头的单链表的头节点,那么reverse(3) 也就是本层调用的返回值一定和reverse(4)有联系,要不然怎么依赖下一层调用,reverse(4) 返回的单链表最后接本层的节点3 就是reverse(3)的返回值,
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* ListNode *next;
* ListNode() : val(0), next(nullptr) {}
* ListNode(int x) : val(x), next(nullptr) {}
* ListNode(int x, ListNode *next) : val(x), next(next) {}
* };
*/
class Solution {
public:
ListNode* reverseList(ListNode* head) {
//一般正常输入是不会传入null的, 这个判断只是迎合题目的测试用例
if(head==nullptr){
return head;
}
if(head->next ==nullptr){
return head;
}
ListNode* last = reverseList(head->next);
head->next->next = head;
head->next =nullptr;
return last;
}
};