Junhc

岂止于博客

剑指offer之从尾到头打印链表

题目描述
输入一个链表,按链表值从尾到头的顺序返回一个ArrayList。
解题思路

解题代码
/**
*    public class ListNode {
*        int val;
*        ListNode next = null;
*
*        ListNode(int val) {
*            this.val = val;
*        }
*    }
*
*/

// 递归
ArrayList<Integer> arrayList = new ArrayList<Integer>();

public ArrayList<Integer> printListFromTailToHead(ListNode listNode) {
    if (listNode != null) {
        this.printListFromTailToHead(listNode.next);
        arrayList.add(listNode.val);
    }
    return arrayList;
}

// 栈
public ArrayList<Integer> printListFromTailToHead(ListNode listNode) {
    Stack<Integer> stack = new Stack<>();
    while (listNode != null) {
        stack.add(listNode.val);
        listNode = listNode.next;
    }

    ArrayList<Integer> arrayList = new ArrayList<>();
    while (!stack.isEmpty()) {
        arrayList.add(stack.pop());
    }
    return arrayList;
}