链表的反转打印

question:输入一个链表,按链表值从尾到头的顺序返回一个ArrayList。

resolution1:先用一个链表依次保存每个node的值,然后再用一个链表保存反转后的值

  /**
         * 运行时间:22ms
         * 占用内存:9200k
         * @param listNode
         * @return
         */
        public ArrayList<Integer> printListFromTailToHead(ListNode listNode) {
            ArrayList list = new ArrayList();
            ArrayList<Integer> revertList = new ArrayList<>();
            while (listNode != null){//判断当前node是否为null进行链表的遍历
                list.add(listNode.val);
                listNode = listNode.next;
            }
            for(int i = list.size()-1; i >=0; i--){//这里的i可以取到0
                revertList.add((Integer) list.get(i));
            }
            return revertList;

        }

resolution2:采用递归判断下个节点是否为空,直到将指针指到最后一个节点,然后再依次进行取值,最后取出的值就是反转的列表。

  ArrayList list = new ArrayList();//作为全局变量,共用同一个list
        public ArrayList<Integer> printListFromTailToHead(ListNode listNode) {
            if (listNode != null) {
                printListFromTailToHead(listNode.next);//依次递归,直到指到最后一个node
                list.add(listNode.val);//再从最后一个node依次遍历前面的node的值
            }
            return list;
        }
欢迎关注我的公众号:小秋的博客 CSDN博客:https://blog.csdn.net/xiaoqiu_cr github:https://github.com/crr121 联系邮箱:rongchen633@gmail.com 有什么问题可以给我留言噢~
原文地址:https://www.cnblogs.com/flyingcr/p/10326849.html