从尾到头打印链表
输入一个链表的头节点,从尾到头反过来返回每个节点的值
(用数组返回)。
示例 1:
输入:head = [1,3,2]
输出:[2,3,1]
提供三种题解

class Solution:
"""
解题思路一: 递归解法
1.f(-r) = f(head.next) + head.val
2.f(head.next) 为递归函数
解题思路二: 利用栈的特性,先入后出
1.遍历链表,不停的入栈
2.不停的弹出栈,并把值放到数组中
解题思路三:
1.先翻转整个链表
2.再顺序输出
"""
def reversePrint(self, head: ListNode) -> List[int]:
result = list()
self.reverseTrave(head, result)
return result
def reverseTrave(self, head, result):
if not head:
return
self.reverseTrave(head.next, result)
result.append(head.val)
def reversePrint(self, head: ListNode) -> List[int]:
stack = list()
result = list()
while head:
stack.append(head.val)
head = head.next
while stack:
result.append(stack.pop())
return result
def reversePrint(self, head: ListNode) -> List[int]:
new_head = None
result = list()
while head:
per = head.next
head.next = new_head
new_head = head
head = per
while new_head:
result.append(new_head.val)
new_head = new_head.next
return result