劍指03.從尾到頭列印連結串列
阿新 • • 發佈:2020-08-03
題目描述
輸入一個連結串列,按連結串列從尾到頭的順序返回一個ArrayList。思路
方法一:藉助棧的“後進先出”實現。從頭到尾遍歷連結串列,每經過一個節點,就把節點壓入棧中。遍歷完後,再從棧頂逐個輸出節點的值。
方法二:用遞迴實現(遞迴的本質就是一個棧結構)。每訪問到一個節點的時候,先遞迴輸出它後面的節點,再輸出該節點自身的值。
方法一
/** * public class ListNode { * int val; * ListNode next = null; * * ListNode(int val) { * this.val = val; * } * } **/ import java.util.Stack; import java.util.ArrayList; public class Solution { public ArrayList<Integer> printListFromTailToHead(ListNode listNode) { Stack<Integer> stack = new Stack<Integer>(); while (listNode != null){ stack.push(listNode.val); listNode= listNode.next; } ArrayList<Integer> list = new ArrayList<Integer>(); while (!stack.isEmpty()){ list.add(stack.pop()); } return list; } }
☆☆方法二
/** * 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<Integer>(); public ArrayList<Integer> printListFromTailToHead(ListNode listNode) { if (listNode != null){ printListFromTailToHead(listNode.next); list.add(listNode.val); } return list; } }