# 题目描述

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

# 代码实现

  • 借助堆栈实现。

    public static ArrayList<Integer> printListFromTailToHead(ListNode listNode) {
        Stack<Integer> integerStack = new Stack<>();
        while (listNode != null) {
            integerStack.push(listNode.val);
            listNode = listNode.next;
        }
        ArrayList<Integer> integerArrayList = new ArrayList<>();
        while (!integerStack.isEmpty()) {
            integerArrayList.add(integerStack.pop());
        }
        return integerArrayList;
    }
  • 借助递归实现。

    public ArrayList<Integer> printListFromTailToHead(ListNode listNode) {
        ArrayList arrayList = new ArrayList();
        xx(arrayList, listNode);
        return arrayList;
    }
    public void xx(ArrayList<Integer> arrayList, ListNode listNode) {
        if (listNode != null) {
            xx(arrayList, listNode.next);
            arrayList.add(listNode.val);
        }
    }