1、采用非递归的方法,遍历链表,(将链表中的值放到一个栈中去,然后将栈输出)或者创建一个数组,每次将新的节点值放在数组的第一位,以此类推,最后打印数组。
public static ArrayList<Integer> printListFromTailToHead(ListNode listNode) { ArrayList<Integer> list = new ArrayList<>(); ListNode tmp = listNode; while(tmp!=null){ list.add(0,tmp.num); System.out.println(list.get(0)); tmp = tmp.next; } return list; }
2、采用递归,递归到最后一个节点,将值放到数组中,然后再往下放
ArrayList<Integer> list = new ArrayList(); public ArrayList<Integer> printListFromTailToHead(ListNode listNode) { if(listNode!=null){ printListFromTailToHead(listNode.next); list.add(listNode.num); } return list; }