從尾到頭打印鏈表-劍指offer

Java:

遞歸:利用系統棧打印鏈表

/**
*    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();
    public ArrayList<Integer> printListFromTailToHead(ListNode listNode) { 
        if(listNode!=null){
            printListFromTailToHead(listNode.next);
            list.add(listNode.val);
        }
        return list;
    }
}

其中,

ArrayList<Integer> list = new ArrayList<>();

放在方法的外面

方法二:非遞歸

ArrayList 中有個方法是 add(index,value),可以指定 index 位置插入 value 值
所以我們在遍歷 listNode 的同時將每個遇到的值插入到 list 的 0 位置,最後輸出 listNode 即可得到逆序鏈表

/**
*    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<Integer> list = new ArrayList<>();
        while(listNode!=null){
            list.add(0,listNode.val);
            listNode=listNode.next;
        }
        return list;
    }
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章