1、从尾到头打印链表
法一:辅助栈法
链表从前向后访问节点,依次添加到栈里,再倒序返回;
class Solution:
def reversePrint(self, head):
list1=[]
while head:
list1.append(head.val)
head=head.next
return list1[::-1]`
时间复杂度:O(N),入栈和出栈操作;
空间复杂度:O(N),辅助栈使用O(N)的额外时间;
法二:递归法
递推阶段:先访问至末尾的节点None返回空列表;
回溯阶段:依次添加当前的节点对应值(倒序添加),即可倒序输出;
class Solution:
def reversePrint(self, head):
if head:
return self.reversePrint(head.next) + [head.val]
else:
return []
再精简一点用三目运算符去书写return语句
class Solution:
def reversePrint(self, head):
return self.reversePrint(head.next) + [head.val] if head else []
时间复杂度:O(N),访问链表各个节点;
空间复杂度:O(N),递归的最大深度;