题目描述
输入一个链表,按链表从尾到头的顺序返回一个ArrayList。
解题笔记
方法1
后进先出,因此后面插入的值插在最前面
note: python用栈的作法?
方法2
递归在本质上是一个栈结构,但是它存在一个问题:当链表非常长的时候,会导致函数调用的层级很深,从而有可能导致函数调用栈溢出。显式用栈基于循环实现的代码的鲁棒性要好一些。
Python 代码
# 方法1
class Solution:
def printListFromTailToHead(self, listNode):
list=[]
while listNode:
list.insert(0, listNode.val)
listNode = listNode.next
return list
# 方法2
class Solution:
# 返回从尾部到头部的列表值序列,例如[1,2,3]
list=[]
def printListFromTailToHead(self, listNode):
# write code here
if listNode:
self.printListFromTailToHead(listNode.next)
list.append(listNode.val)
return list