# class ListNode:
# def __init__(self, x):
# self.val = x
# self.next = None
#
# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
#
#
# @param head ListNode类
# @return ListNode类
#
class Solution:
def ReverseList(self , head: ListNode) -> ListNode:
if head == None:
return head
return self.reverseListHelp(head)[0]
# 返回数组当前链表反转后得到的新链表的[头结点,尾节点]
def reverseListHelp(self , head: ListNode) -> List:
if head.next == None:
return [head , head]
# 获取下一个节点翻转后的[头结点,尾节点]
headAndTail = self.reverseListHelp(head.next)
# 将当前节点添加到尾结点之后
headAndTail[1].next = head
# 当前节点已经成为了尾结点,后面再应该有节点
head.next = None
# 返回数组当前链表反转后得到的新链表的[头结点,尾节点]
return [headAndTail[0] , head]