先给出链表定义
class ListNode:
def __init__(self, x):
self.val = x
self.next = None
若允许开辟新的内存空间,直接使用栈数据结构,遍历完链表后依次pop输出.
class Solution:
def printListFromTailToHead(self, listNode):
res = []
node = listNode
while node:
res.append(node.val)
node = node.next
res.reverse()
return res
使用递归,每一层的任务就是”先输出next指向的节点值,再输出自己的节点值.”
class Solution:
# 返回从尾部到头部的列表值序列,例如[1,2,3]
def printListFromTailToHead(self, listNode):
if not listNode :
return []
else:
return self.printListFromTailToHead(listNode.next) + [listNode.val]