从尾到头打印链表

题目描述

输入一个链表,按链表从尾到头的顺序返回一个ArrayList。

示例

示例 1:

输入: 1->2->3->4
输出: [4,3,2,1]

解题

思路

先进后出首先想到的是栈,那么我们就可以使用虚拟机栈来做这件事,也就是递归来解决。

代码

public class PrintListFromTailToHead {

    public static void main(String[] args) {
        ListNode linkedList = LinkedListUtil.getLinkedList(new int[]{1, 2, 4, 2, 12, 4, 2, 23, 43});
        System.out.println(printListFromTailToHead(linkedList));;
    }

    static ArrayList<Integer> list = new ArrayList<>();

    public static ArrayList<Integer> printListFromTailToHead(ListNode listNode) {
        if (Objects.nonNull(listNode)) {
            printListFromTailToHead(listNode.next);
            list.add(listNode.val);
        }
        return list;
    }

}