• 从尾到头打印链表
    • 题目
    • 解题思路

    从尾到头打印链表

    题目

    牛客网

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