题目描述
输入一个链表,按链表值从尾到头的顺序返回一个ArrayList。
本文的解题方法,有两种思路;一种是用栈的方法;另一种是用递归的方法
栈的方法如下
/** * public class ListNode { * int val; * ListNode next = null; * * ListNode(int val) { * this.val = val; * } * } * */ import java.util.Stack; import java.util.ArrayList; public class Solution { public ArrayList<Integer> printListFromTailToHead(ListNode listNode) { ArrayList<Integer> list=new ArrayList<Integer>(); if(listNode==null){ return list; } 接下来用栈进行判断 Stack<Integer> stack=new Stack<Integer>(); while(listNode!=null){ stack.add(listNode.val); listNode=listNode.next; } while(!stack.isEmpty()){ list.add(stack.pop()); } return list; } }
队列的方法如下
/** * public class ListNode { * int val; * ListNode next = null; * * ListNode(int val) { * this.val = val; * } * } * */ 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; } }