前言
本文章记录了算法题 反转链表 的递归解法
题目
思路
将当前结点后面的链表反转,返回头结点
当前结点添加到反转链表的后面,再将当前结点的next指针置为空
关注点
当递归至最后一层,即得到尾结点,一定要将其标记为新的头结点newhead
函数头
void reverse(Listnode head)
函数体
newhead = reverse(head.next)
head.next.next = head
head.next = null
return newhead
递归出口
if(headnull || head.nextnull)
return head
动图演示
代码编写
class Solution {
public ListNode reverseList(ListNode head) {
if(head==null || head.next==null) return head;
ListNode newhead=reverseList(head.next);
head.next.next=head;
head.next=null;
return newhead;
}
}
总结
反转链表(递归)的宏观思路:
当前结点head后面的链表反转,再将head链接到反转链表,head的next指针置为空。
文章到这结束啦,感谢阅读~
如果你觉得文章写的还不错,记得点赞收藏评论三连~ ❤