描述
輸入一個連結清單的頭節點,按連結清單從尾到頭的順序傳回每個節點的值(用數組傳回)。
如輸入{1,2,3}的連結清單如下圖:

傳回一個數組為[3,2,1]
思路:反向列印連結清單,這種題目,一條思路是通過遞歸,遞歸到最後,再将值添加到所建立的數組當中。
這個方法主要是用于加強對遞歸使用的了解,但是無法AC。
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;
}
}
第二個思路:利用棧來,将周遊連結清單中的數,将其添加到棧當中。
接着出棧添加到list當中。
import java.util.ArrayList;
import java.util.Stack;
public class Solution {
Stack<Integer> stack=new Stack<>();
ArrayList<Integer> list=new ArrayList<>();
public ArrayList<Integer> printListFromTailToHead(ListNode listNode) {
while(listNode!=null){
stack.push(listNode.val);
listNode=listNode.next;
}
while(!stack.empty()){
list.add(stack.pop());
}
return list;
}
}