题目描述
输入一个链表,按链表值从尾到头的顺序返回一个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;
}

本文介绍了一种链表处理技巧,通过非递归和递归方法实现从尾到头输出链表值。非递归方法使用ArrayList存储链表节点值并进行反转,递归方法直接逆序添加节点值。
172万+

被折叠的 条评论
为什么被折叠?



