书上是输出就行,牛客网上是返回一个数组,这是放在数组返回的,输出就直接输出了。
利用栈
利用栈就是遍历链表的同时,压入栈,注意是while只要头节点不为空就压入,然后再只要不为空就弹出到arraylist
java 中栈的用法:
(1)stack.push(i) 压栈
(2)stack.pop()弹出栈并且删除
(3)stack.peek()查看栈顶 syso(stack)就可查看全部
(4)stack.empty 或stack.isEmpty()判是否为空
/**
* public class ListNode {
* int val;
* ListNode next = null;
*
* ListNode(int val) {
* this.val = val;
* }
* }
*
*/
import java.util.ArrayList;
import java.util.Stack;
public class Solution {
ArrayList<Integer> arrayList = new ArrayList<>();
Stack<Integer> stack = new Stack<>();
public ArrayList<Integer> printListFromTailToHead(ListNode listNode) {
ListNode listHead = listNode;
while(listHead!=null){
stack.push(listHead.val);
listHead = listHead.next;
}
while(!stack.empty()){
arrayList.add(stack.pop());
}
return arrayList;
}
}
利用递归
/**
* public class ListNode {
* int val;
* ListNode next = null;
*
* ListNode(int val) {
* this.val = val;
* }
* }
*
*/
import java.util.ArrayList;
public class Solution {
ArrayList<Integer> arrayList = new ArrayList<>();
public ArrayList<Integer> printListFromTailToHead(ListNode listNode){
if(listNode!=null){
printListFromTailToHead(listNode.next);
arrayList.add(listNode.val);
}
return arrayList;
}
}