题目描述

输入一个链表,从尾到头打印链表每个节点的值。

链表结构

public class ListNode {
    int val;
    ListNode next = null;

    ListNode(int val) {
        this.val = val;
    }
}

方法一:遍历链表,把结果存入List,再将List中的结果倒序存入另一个List

import java.util.ArrayList;
public class Solution {
    public ArrayList<Integer> printListFromTailToHead(ListNode listNode) {
        ArrayList<Integer> list = new ArrayList<Integer>();
        ArrayList<Integer> list2 = new ArrayList<Integer>();
        while(listNode!=null){
            list.add(listNode.val);
            listNode = listNode.next;
        }
        for(int i=list.size();i>0;i--){
            list2.add(list.get(i));
        }
        return list2;
    }
}

方法二:递归

递归的本质是使用了堆栈结构

import java.util.ArrayList;
public class Solution {
    ArrayList<Integer> list = new ArrayList<Integer>();
    public ArrayList<Integer> printListFromTailToHead(ListNode listNode) {
        if(listNode!=null){
            printListFromTailToHead(listNode.next);
            list.add(listNode.val);
        }
        return list;
    }
}