劍指offer(java實現)第3題“從尾到頭列印連結串列”-牛客網

zhuminChosen發表於2018-07-19

題目描述

輸入一個連結串列,按連結串列值從尾到頭的順序返回一個ArrayList。

時間限制:1秒 空間限制:32768K 熱度指數:571426

解答:

有多種解答方案:1,遞迴(本部落格列出的程式碼例項) 2,棧 3,倒轉連結串列指標,再從頭到尾列印

/**
*    public class ListNode {
*        int val;
*        ListNode next = null;
*
*        ListNode(int val) {
*            this.val = val;
*        }
*    }
*
*/
import java.util.ArrayList;
public class Solution {//該思路是採用遞迴,從尾到頭依次列印連結串列節點
    public ArrayList<Integer> printListFromTailToHead(ListNode listNode) {
        ArrayList arrayList = new ArrayList();
        if (listNode == null) {
            return arrayList;
        }
        printListFromTailToHead(arrayList, listNode);
        return arrayList;
    }
    
    public void printListFromTailToHead(ArrayList array, ListNode listNode) {
        
        
        if (listNode.next == null) {//當到達連結串列尾部時,將值新增到ArrayList
            array.add(listNode.val);
        }else {
            printListFromTailToHead(array, listNode.next);//進入下一個節點
            array.add(listNode.val);//自己的下一個節點執行完,回退到本節點時再將值新增進ArrayList
        }
    }
}

 

相關文章