描述
输入一个链表的头节点,按链表从尾到头的顺序返回每个节点的值(用数组返回)。
如输入{1,2,3}的链表如下图:
返回一个数组为[3,2,1]
思路:反向打印链表,这种题目,一条思路是通过递归,递归到最后,再将值添加到所创建的数组当中。
这个方法主要是用于加强对递归使用的理解,但是无法AC。
import java.util.ArrayList;
public class Solution {
ArrayList<Integer> list=new ArrayList<>();
public ArrayList<Integer> printListFromTailToHead(ListNode listNode) {
if(listNode!=null){
printListFromTailToHead(listNode.next);
list.add(listNode.val);
}
return list;
}
}
第二个思路:利用栈来,将遍历链表中的数,将其添加到栈当中。
接着出栈添加到list当中。
import java.util.ArrayList;
import java.util.Stack;
public class Solution {
Stack<Integer> stack=new Stack<>();
ArrayList<Integer> list=new ArrayList<>();
public ArrayList<Integer> printListFromTailToHead(ListNode listNode) {
while(listNode!=null){
stack.push(listNode.val);
listNode=listNode.next;
}
while(!stack.empty()){
list.add(stack.pop());
}
return list;
}
}