题目描述
输入一个链表,按链表从尾到头的顺序返回一个ArrayList。
方法一:非递归
见代码,较为简单,直接将从头到尾遍历到的节点值都放在第一个位置,从而实现了反转
/**
* public class ListNode {
* int val;
* ListNode next = null;
*
* ListNode(int val) {
* this.val = val;
* }
* }
*
*/
import java.util.ArrayList;
public class Solution {
ArrayList<Integer> list = new ArrayList<>();
public ArrayList<Integer> printListFromTailToHead(ListNode listNode) {
ListNode cur = listNode;
while(cur != null){
list.add(0,cur.val);//遍历然后把值都放在第一个位置处
cur = cur.next;
}
return list;
}
}
方法二:递归
/**
* public class ListNode {
* int val;
* ListNode next = null;
*
* ListNode(int val) {
* this.val = val;
* }
* }
*
*/
import java.util.ArrayList;
public class Solution {
ArrayList<Integer> list = new ArrayList<>();
public ArrayList<Integer> printListFromTailToHead(ListNode listNode) {
//递归结束的条件
if(listNode == null) return list;
printListFromTailToHead(listNode.next);
//递归后从后向前加
list.add(listNode.val);
return list;
}
}