1. 程式人生 > >【劍指offer】輸入一個連結串列,按連結串列值從尾到頭的順序返回一個ArrayList

【劍指offer】輸入一個連結串列,按連結串列值從尾到頭的順序返回一個ArrayList

劍指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; } }