1.题目描述
输入一个链表,按链表值从尾到头的顺序返回一个ArrayList。
2.思路
1.通过递归的方式来实现,递归正好与从尾到头契合
2.通过栈的思想来实现,创建一个数组,每次将元素存在数组的头
其次,要记得判断是否为空节点
3.实现
递归的方式
def printListFromTailToHead(self, listNode):
if listNode is None:
return []
return self.printListFromTailToHead(listNode.next)+[listNode.val]
栈的方式
def printListFromTailToHead(self, listNode):
stack=[]
if listNode == None:
return []
while listNode.next != None:
stack.insert(0,listNode.val)
listNode=listNode.next
stack.insert(0,listNode.val)
return stack
4.相关知识点
1.python构建链表,可以参考之前写的数据结构文章:单链表的实现
2.对于is 和==这两个操作符的理解
"""这里牵扯到用is/is not与==/!=的区别"""
"""在python中对象包含的三个基本要素,分别是:id(身份标识)、type(数据类型)和value(值)"""
"""is 比较的是id ==比较的是value"""
"""只有数值型和字符串型的情况下,a is b才为True,当a和b是tuple,list,dict或set型时,a is b为False"""