剑指Offer_从尾到头打印链表

题目描述

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

思路

思路1

递归

思路2

使用栈

代码

/**
*    public class ListNode {
*        int val;
*        ListNode next = null;
*
*        ListNode(int val) {
*            this.val = val;
*        }
*    }
*
*/
import java.util.ArrayList;
import java.util.Stack;

public class Solution {
    // 思路1
    public ArrayList<Integer> printListFromTailToHead(ListNode listNode) {

        ArrayList<Integer> list = new ArrayList<>();
        add(list, listNode);
        return list;
    }

    private static void add(ArrayList<Integer> list, ListNode node) {
        if (node != null) {
            add(list, node.next);
            list.add(node.val);
        }

    }

    // 思路2
    public ArrayList<Integer> printListFromTailToHead2(ListNode listNode) {

        Stack<Integer> stack = new Stack<>();
        while (listNode != null) {
            stack.push(listNode.val);
            listNode = listNode.next;
        }
        ArrayList<Integer> list = new ArrayList<>();
        while (!stack.empty()) {
            list.add(stack.pop());
        }
        return list;
    }
}
posted @ 2020-04-13 10:59  心流flux  阅读(102)  评论(0)    收藏  举报