劍指Offer面試題5 Java解法
阿新 • • 發佈:2019-01-31
題目:輸入一個連結串列,從尾到頭列印連結串列每個節點的值。
輸入描述:
輸入為連結串列的表頭
輸出描述:
輸出為需要列印的“新連結串列”的表頭
該題的解題思路是遞迴或者是棧:
遞迴解法:
棧的解法:public static void printListReverse1(ListNode headNode){ if (headNode != null){ if(headNode.next != null){ printListReverse1(headNode.next); } } System.out.println(headNode.val); }
還有這種遞迴方法挺難理解的,現在我還是不咋理解哈哈,debug一下看到了程式走的步驟,反正讓我寫我是寫不出來,有興趣的可以思考下:public static void printListReverse(ListNode headNode){ Stack<ListNode> stack = new Stack<ListNode>(); while (headNode != null){ stack.push(headNode); headNode = headNode.next; } while (!stack.empty()){ System.out.println(stack.pop().val); } }
public class Solution { ArrayList<Integer> arrayList=new ArrayList<Integer>(); public ArrayList<Integer> printListFromTailToHead(ListNode listNode) { if(listNode!=null){ this.printListFromTailToHead(listNode.next); arrayList.add(listNode.val); } return arrayList; } }