题目描述
输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。
解题思路
思路一:
由于链表只能顺序索引,无法做到逆序索引。这个时候可以借用其他的数据结构来实现逆序,说到这里就想到了栈的先入后出功能。我们将数据放入栈中,即可实现逆序输出
时间复杂度:O(n),空间复杂度:O(n)
思路二:
不仅栈可以实现逆序的功能,我们还可以通过递归的方式实现逆序,我们逆序的索引至最后一个node,然后从最后一个节点开始输出,通过不断往回溯来实现逆序
时间复杂度:O(n),空间复杂度:O(n)
python 实现
方法一
# 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 is None:return []
node =[]
while head:
node.insert(0,head.val)
head = head.next
return node
方法二
# Definition for singly-linked list.
# class ListNode:
# def __init__(self, x):
# self.val = x
# self.next = None
class Solution:
def __init__(self):
self.node = []
def reversePrint(self, head: ListNode) -> List[int]:
if head:
self.reversePrint(head.next)
self.node.append(head.val)
return self.node