题目描述
输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。
示例 1:
输入:head = [1,3,2]
输出:[2,3,1]
限制:
0 <= 链表长度 <= 10000
解题思路1: 遍历法
正序遍历链表到数组, 将数组反序输入
示例代码1:
def reversePrint(head: helper.ListNode):
result = []
while head is not None:
result.append(head.val)
head = head.next
return result[::-1]
解题思路2: 辅助栈法
遍历链表, 放进一个栈里, 根据栈FILO的特点, 输出栈就是倒序的链表
示例代码2:
def reversePrint(head: helper.ListNode):
stack = []
while head is not None:
stack.append(head.val)
head = head.next
res = []
while len(stack) > 0:
res.append(stack.pop())
return res
解题思路3: 递归回溯法
递归遍历链表, 回溯时返回上次递归的数组与当前item
示例代码3:
def reversePrint(head: helper.ListNode):
if head is None:
return []
else:
return reversePrint(head.next) + [head.val]