题目描述
输入一个链表,按链表从尾到头的顺序返回一个ArrayList。
1、使用非递归的方法
我们的list中有一个add方法,可以指定把当前需要插入的内容插入指定的位置。
public class test {
ArrayList<Integer> list = new ArrayList();
public ArrayList<Integer> printListFromTailToHead(ListNode listNode) {
ArrayList<Integer> list = new ArrayList<>();
ListNode tmp = listNode;
while(tmp!=null){
list.add(0,tmp.val);//使用add(index,value)的方法插入,保证每次插入内容都是在开头位置
tmp = tmp.next;
}
return list;
}
}
class ListNode {
int val;
ListNode next = null;
ListNode(int val) {
this.val = val;
}
}
2、使用递归的方式
递归的方式利用了jvm的栈结构,后进现出,保证了每次添加的数据都是从栈的最外层添加。
public class test {
ArrayList<Integer> list = new ArrayList();
public ArrayList<Integer> printListFromTailToHead(ListNode listNode) {
if(listNode!=null){
printListFromTailToHead(listNode.next);
list.add(listNode.val);
}
return list;
}
}
class ListNode {
int val;
ListNode next = null;
ListNode(int val) {
this.val = val;
}
}