题目描述
输入一个链表,按链表值从尾到头的顺序返回一个ArrayList。
解析
方法一
这种问题首先想到的就是递归。将ArrayList设置为全局变量,递归遍历,由尾节点依次添加进链表。
代码如下:
/**
* public class ListNode {
* int val;
* ListNode next = null;
*
* ListNode(int val) {
* this.val = val;
* }
* }
*
*/
import java.util.ArrayList;
public class Solution {
ArrayList<Integer> arrayList = new ArrayList<Integer> ();
public ArrayList<Integer> printListFromTailToHead(ListNode listNode) {
if(listNode != null ){
printListFromTailToHead(listNode.next);
arrayList.add(listNode.val);
}
return arrayList ;
}
}
方法二
其实就是方法一的变形,不设置全局变量,直接用递归将结果返回。
代码如下:
public class Solution {
public ArrayList<Integer> printListFromTailToHead(ListNode listNode) {
if(listNode == null )
return new ArrayList<Integer>();
if(listNode.next == null){
ArrayList<Integer> l = new ArrayList<Integer> ();
l.add(listNode.val);
return l;
}
ArrayList<Integer> l = printListFromTailToHead(listNode.next) ;
l.add(listNode.val) ;
return l;
}
}