剑指offer06 从尾到头打印链表
**题目描述:**输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。
方法一:遍历链表保存在list中,再反向输出
list反转的两种方法:
- 切片:list[::-1]
- 使用reverse()方法:list.reverse(),注意该方法只对list中的元素进行反转排列,不返回任何参数。因此,若在以下代码中直接return lst.reverse(),则得不到正确结果(返回None)
# 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]:
lst = []
p = head
while p != None:
lst.append(p.val)
p = p.next
lst.reverse()
return lst
方法二:使用递归的方法
该例子也说明了递归的本质上就是一个栈,后进先出
class Solution:
def reversePrint(self, head: ListNode) -> List[int]:
return self.reversePrint(head.next) + [head.val] if head else []