从尾到头打印链表

概述:输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。

输入: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]

总结

这个例子充分说明了递归本质上就是一个栈,先进后出!

Logo

领路信创诚邀您共建高质量内容社区,投稿申请~

更多推荐