参考: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; } }