# -*- coding:utf-8 -*-
# class ListNode:
# def __init__(self, x):
# self.val = x
# self.next = None
'''
递归:
1.开始状态
|pHead|--->|pHead.next|--> ……
2.递归:假设pHead.next之后的结点已经反转则如下:
___________________ newHead=self.ReverseList(pHead.next)
| ↓ |
|pHead| None <--|pHead.next| <-- …… <--|newHead|
接下来只需进行如下操作:
pHead.next指向pHead,
pHead指向None 就完成了最后一步操作:
newHead=self.ReverseList(pHead.next)
|
None <--|pHead| <--|pHead.next| <-- …… <--|newHead|
最后返回整个链表的新表头即可
3.加上递归结束条件
当pHead为None时直接返回None 当我们pHead.next为None时 返回pHead就行
'''
class Solution:
# 返回ListNode
def ReverseList(self, pHead):
# write code here
if not pHead or not pHead.next:
return pHead
newHead=self.ReverseList(pHead.next)
pHead.next.next=pHead
pHead.next=None
return newHead