【劍指offer】輸入一個連結串列,按連結串列值從尾到頭的順序返回一個ArrayList
阿新 • • 發佈:2018-11-27
劍指offer第三題
題目如下
輸入一個連結串列,按連結串列值從尾到頭的順序返回一個ArrayList
具體程式碼實現如下:
下面展示兩種程式碼實現,思想都是基於遞迴,遍歷到連結串列末尾,由低向上儲存資料。
1.相互呼叫遞迴
import java.util.ArrayList;
public class Solution {
/**
* public class ListNode {
* int val;
* ListNode next = null;
*
* ListNode(int val) {
* this.val = val;
* }
*}
*/
/**
* 輸入一個連結串列,按連結串列值從尾到頭到順序返回一個ArrayList
* 解決辦法:利用遞迴的思路,遍歷到連結串列末尾,開始返回,用陣列儲存
* @param args
*/
public ArrayList<Integer> printListFromTailToHead(ListNode listNode){
ArrayList<Integer> arrayList = new ArrayList<Integer>();
if(listNode == null){
return arrayList;
}
printListFromTailToHead (listNode,arrayList);
return arrayList;
}
public void printListFromTailToHead(ListNode listNode,ArrayList<Integer> list){
if(listNode.next != null){
printListFromTailToHead(listNode.next,list);
}
list.add(listNode.val);
}
}
2.自身呼叫(相比而言,程式碼量更少一些,但佔用空間稍大一點點)
public class Solution {
ArrayList list = new ArrayList();
public ArrayList<Integer> printListFromTailToHead(ListNode listNode){
if(listNode != null){
printListFromTailToHead(listNode.next);
list.add(listNode.val);
}
return list;
}
}