题目描述:输入一个链表,从尾巴到头存入一个ArrayList 后返回
思路一: 递归,定义一个全局的ArrayList,同时写一个递归方法f(ListNode listNode),再递归到节点为null的时候还是往回走。
程序:
/**
* public class ListNode {
* int val;
* ListNode next = null;
*
* ListNode(int val) {
* this.val = val;
* }
* }
*
*/
import java.util.ArrayList;
public class Solution {
ArrayList<Integer> res = new ArrayList<Integer>();
public ArrayList<Integer> printListFromTailToHead(ListNode listNode) {
if(listNode == null)
return res;
f(listNode);
return res;
}
public void f(ListNode listNode){
if(listNode == null)
return ;
printListFromTailToHead(listNode.next);
res.add(listNode.val);
}
}
思路二:借助栈来实现,将数据存到栈中,最后倒回
程序:
import java.util.ArrayList;
import java.util.Stack;
public class Solution {
public ArrayList<Integer> printListFromTailToHead(ListNode listNode) {
Stack<Integer> stack=new Stack<Integer>();
while(listNode!=null){
stack.push(listNode.val);
listNode=listNode.next;
}
ArrayList<Integer> list=new ArrayList<Integer>();
while(!stack.isEmpty()){
list.add(stack.pop());
}
return list;
}
}