從尾到頭列印連結串列
題目描述
輸入一個連結串列,按連結串列從尾到頭的順序返回一個ArrayList。
題目連結: 從尾到頭列印連結串列
程式碼
import java.util.ArrayList;
/**
* 標題:
* 題目描述
*
* <p>
* 題目連結
*
*/
public class Jz03 {
/**
* 非遞迴
*
* @param listNode
* @return
*/
public static ArrayList<Integer> printListFromTailToHead(ListNode listNode) {
ArrayList<Integer> res = new ArrayList<>();
for (; listNode != null; listNode = listNode.next) {
res.add(0, listNode.val);
}
return res;
}
/**
* 遞迴
*
* @param listNode
* @return
*/
public static ArrayList<Integer> printListFromTailToHead1(ListNode listNode) {
ArrayList<Integer> res = new ArrayList<Integer>();
if (listNode != null) {
res.addAll(printListFromTailToHead1(listNode.next));
res.add(listNode.val);
}
return res;
}
public static void main(String[] args) {
ListNode node = new ListNode(67);
ListNode node1 = new ListNode(0);
ListNode node2 = new ListNode(24);
ListNode node3 = new ListNode(58);
node.next = node1;
node1.next = node2;
node2.next = node3;
// 非遞迴
System.out.println("非遞迴~~~");
ArrayList<Integer> res = printListFromTailToHead(node);
for (int val : res) {
System.out.println(val);
}
// 遞迴
System.out.println("遞迴~~~");
ArrayList<Integer> res1 = printListFromTailToHead1(node);
for (int val : res1) {
System.out.println(val);
}
}
}
【每日寄語】 方向對了,就不怕路遠。堅持不僅是一種品質,也是一種信念。