难度:简单
输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。
示例 1:
输入:head = [1,3,2]
输出:[2,3,1]
限制:
0 <= 链表长度 <= 10000
两种思路:
遍历的顺序从头到尾的顺序,而输出却是从尾到头,同“先进后出”操作类似。
第一种:使用栈来解决。
第二种:递归,递归本质也是一个栈的结构。
class Solution {
public int[] reversePrint(ListNode head) {
ArrayList<Integer> list = new ArrayList<>();
add(head, list);
int[] print = new int[list.size()];
for(int i = 0; i < list.size(); i ++)
print[i] = list.get(i);
return print;
}
private void add(ListNode listNode, ArrayList<Integer> list){
if(listNode == null)
return;
add(listNode.next, list);
list.add(listNode.val);
}
}