剑指Offer(Python)—— 从尾到头打印链表(简单)
概述:输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。
·
从尾到头打印链表
概述:输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。
输入:head = [1,3,2]
输出:[2,3,1]
方法一:递归
思路:先走至链表末端,回溯时依次将节点值加入列表 ,这样就可以实现链表值的倒序输出。
# 递归
class Solution:
def reversePrint(self, head: ListNode) -> List[int]:
return self.reversePrint(head.next) + [head.val] if head else []
方法二:栈
思路:遍历链表,将各节点值 append 入栈。直接返回 stack 的倒序列表。
# 栈
class Solution:
def reversePrint(self, head: ListNode) -> List[int]:
stack = []
while head:
stack.append(head.val)
head = head.next
return stack[::-1]
总结
这个例子充分说明了递归本质上就是一个栈,先进后出!
更多推荐
已为社区贡献2条内容
所有评论(0)