1 /** 2 * public class ListNode { 3 * int val; 4 * ListNode next = null; 5 * 6 * ListNode(int val) { 7 * this.val = val; 8 * } 9 * } 10 * 11 */ 12 import java.util.ArrayList; 13 public class Solution { 14 ArrayList<Integer> myList = new ArrayList<Integer>(); 15 public ArrayList<Integer> printListFromTailToHead(ListNode listNode) { 16 if(listNode != null){ 17 //a = listNode.next; 18 this.printListFromTailToHead(listNode.next); 19 myList.add(listNode.val);//中文字符错误过一次 20 } 21 return myList; 22 } 23 }
运用了递归的思想,递归的点在this.printListFromTailToHead(listNode.next),在最后一次递归方法返回后,每一层的递归方法都会做一个myList.add(listNode.val)的操作,从最后一次到第一次。
这是参考牛客网大神的说法,自己还需要再推敲推敲。
递归:直接或间接调用自己的算法
欲知后事,请听之后分解~