从尾到头打印链表
输入一个链表,按链表从尾到头的顺序返回一个ArrayList。
思路
1、直接递归,如果下一个结点为空就添加当前节点元素,如果不为空就递归,回调之后添加当前元素
2、遍历链表,将链表值添加到一个队列中
利用集合的reverse()将队列反转(原理是首尾元素交换)
从后往前遍历队列并添加到新队列中
代码
方法一:递归
if(listNode.next == null) //为空表示当前是最后一个元素,见结点值加入队列
list.add(listNode.val);
else{
list = printListFromTailToHead(listNode.next);
list.add(listNode.val);
}
方法二:集合reverse()
ListNode temp = listNode;//定义一个临时节点
while(temp!=null){
list.add(temp.val);
temp = temp.next;
}
Collections.reverse(list);
方法三:
遍历链表添加元素值至ArrayList中,再从后往前遍历数组