题目描述

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

思路:
1.递归
2.栈

代码:

递归代码
public class Solution {
    ArrayList<Integer> arrayList=new ArrayList<Integer>();
    public ArrayList<Integer> printListFromTailToHead(ListNode listNode) {
        if(listNode!=null){
            this.printListFromTailToHead(listNode.next);
            arrayList.add(listNode.val);
        }
        return arrayList;
    }
}

栈代码
import java.util.Stack;
import java.util.ArrayList;

public class Solution {
    public ArrayList<Integer> printListFromTailToHead(ListNode listNode) {
        Stack<Integer> s =  new Stack<>();
        while (listNode != null){
            s.push(listNode.val);
            listNode = listNode.next;
        }
        ArrayList<Integer> arr = new ArrayList<>();
        while (!s.empty()){
            arr.add(s.pop());
        }
        return arr;
    }
}