算法刷题笔记-打印链表

141 阅读1分钟

参考:B站UP--子烁爱学习(推荐大家观看原视频)

  • 题目描述:


  • 题目解析

    • 如果采用的是非递归的方法:

      • 建立一个list,将链表当前节点的值加入list(0,node.val),然后将node指向下一个节点,继续插入list,这样list中是将旧值依次往后推的,就能形成5-4-3-2-1这样的list

        public ArrayList<Integer> print(ListNode listNode) {
                ArrayList<Integer> list = new ArrayList<>();
                ListNode node = listNode;
                while(node != null){
                    //不停的在list[0]处插入元素,形成链表
                    list.add(0,node.val);
                    node = node.next;
                }
        
        
                return list;
            }
    • 递归方法:

      • 递归结束条件是node.next==null

      • 递归循环就是如果其有下一个节点就不打印,直到最后一个,然后依次将5-4-3-2-1节点的值存入数组list

        public class Algorithm{
            ArrayList<Integer> list = new ArrayList<>();
            public ArrayList<Integer> print(ListNode listNode) {
                while(listNode != null){
                    print(listNode.next)
                 	list.add(listNode.val);
                }
                return list;
            }
        }