题目描述
输入一个链表,按链表值从尾到头的顺序返回一个ArrayList。
思路
遍历链表,将链表中的值存入list,再讲list倒序。可用递归和非递归两种方法。
Solution
//非递归
public static ArrayList<Integer> printListFromTailToHead(ListNode listNode) {
ArrayList<Integer> res = new ArrayList<>();
while (listNode != null) {
res.add(listNode.val);
listNode = listNode.next;
}
Collections.reverse(res);
return res;
}
//递归
public ArrayList<Integer> res = new ArrayList<>();
public ArrayList<Integer> printListFromTailToHead(ListNode listNode) {
if (listNode != null) {
printListFromTailToHead(listNode.next); //从链表最后一个结点开始,添加到list中
res.add(listNode.val);
}
return res;
}