题目描述
输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。
解法一:递归
递归本质就是一种栈结构
# Definition for singly-linked list.
# class ListNode:
# def __init__(self, x):
# self.val = x
# self.next = None
class Solution:
def reversePrint(self, head: ListNode) -> List[int]:
if head == None: #判断传入是否为链表尾,若是,返回空数组
return []
else:
res = self.reversePrint(head.next) # 若否,为下一节点调用函数,依次递归
res.append(head.val) #返回值参加在链表
return res
时间复杂度:O(n)O(n)O(n)
空间复杂度:O(n)O(n)O(n)
解法二:栈
# Definition for singly-linked list.
# class ListNode:
# def __init__(self, x):
# self.val = x
# self.next = None
class Solution:
def reversePrint(self, head: ListNode) -> List[int]:
stack = [] # 创建一个栈
while head is not None: # 如果head非空(即没到链表尾)
stack.append(head.val) # 将值压入栈
head = head.next
return stack[::-1] ## 倒序输出
时间复杂度:O(n)O(n)O(n)
空间复杂度:O(n)O(n)O(n)