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 ArrayListmyList = new ArrayList ();15 public ArrayList 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)的操作,从最后一次到第一次。
这是参考牛客网大神的说法,自己还需要再推敲推敲。
递归:直接或间接调用自己的算法
欲知后事,请听之后分解~