递归链表为什么最后返回rev的理解
来源:3-3 翻转链表的递归实现
星火燎猿
2021-03-11 09:42:28
问题描述:
递归链表为什么最后返回rev的理解
相关截图:

相关代码:
//递归实现
public static ListNode reverseList2(ListNode head) {
if (head == null || head.next == null) {
return head;
}
ListNode rev = reverseList2(head.next);
head.next.next = head;
head.next = null;
return rev;
}
可能有些人不理解为什么最后返回的是rev,参考leetcode上的一个动图,递归最后一层返回的是待反转链表的最后一个节点,也就是反转后链表的头节点,在递归的过程中这个头节点rev是不会变的,递归的过程只是从后往前处理链表的指针
head.next.next = head;
head.next = null;
处理指针的过程中,rev作为头节点,之后的节点指针指向会跟着变化。
其实这也是链表的基础概念,每个节点保存当前节点及下一个节点的引用。
1回答
liuyubobobo
2021-03-11
赞!感谢分享:)
继续加油!:)
相似问题