从尾到头打印链表

题目

牛客网

输入一个链表,按链表值从尾到头的顺序返回一个ArrayList。

解题思路

  1. public ArrayList<Integer> printListFromTailToHead(ListNode listNode) {
  2. LinkedList<Integer> stack = new LinkedList<>();
  3. while (listNode != null) {
  4. stack.addLast(listNode.val);
  5. listNode = listNode.next;
  6. }
  7. ArrayList<Integer> res = new ArrayList<>();
  8. while (!stack.isEmpty()) {
  9. res.add(stack.pollLast());
  10. }
  11. return res;
  12. }
  1. 递归:当链表过长时,会导致栈溢出
  1. public ArrayList<Integer> printListFromTailToHead(ListNode listNode) {
  2. ArrayList<Integer> res = new ArrayList<>();
  3. print(res,listNode);
  4. return res;
  5. }
  6. private void print(ArrayList<Integer> res, ListNode listNode) {
  7. if (listNode == null) return;
  8. print(res, listNode.next);
  9. res.add(listNode.val);
  10. }