题目描述:
输入一个链表,按链表从尾到头的顺序返回一个ArrayList。
解题思路:
方法一:使用栈,从头遍历链表,存储每个节点的值,然后再输出栈
方法二:使用递归
实现代码:
public class Solution {
/**
* public class ListNode {
* int val;
* ListNode next = null;
* ListNode(int val) {
* this.val = val;
* }
* }
*/
//方法一:
public ArrayList<Integer> printListFromTailToHead(ListNode listNode) {
ArrayList<Integer> res = new ArrayList<>();
if(listNode == null){
return res;
}
Stack<Integer> stack = new Stack<>();
ListNode cur = listNode;
while(cur != null){
stack.push(cur.val);
cur = cur.next;
}
while(!stack.isEmpty()){
res.add(stack.pop());
}
return res;
}
//方法二:
private ArrayList<Integer> res = new ArrayList<>();
public ArrayList<Integer> printListFromTailToHead(ListNode listNode) {
if(listNode == null){
return res;
}
printListFromTailToHead(listNode.next);
res.add(listNode.val);
return res;
}
}