JZ-003-從尾到頭列印連結串列

雄獅虎豹發表於2021-10-27

從尾到頭列印連結串列

題目描述

輸入一個連結串列,按連結串列從尾到頭的順序返回一個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);
        }
    }
}
【每日寄語】 方向對了,就不怕路遠。堅持不僅是一種品質,也是一種信念。

相關文章