题目描述:输入一个链表,从尾到头打印链表每个节点的值
public class ListNode {
int val;
ListNode next = null;
ListNode(int val) {
this.val = val;
}
}
思路一:借助递归实现(递归的本质还是使用了堆栈结构)
import java.util.ArrayList;
public class Solution {
ArrayList<Integer> res = new ArrayList<>();
public ArrayList<Integer> printListFromTailToHead(ListNode listNode) {
ListNode pNode = listNode;
if (pNode != null)
{
if (pNode.next != null)
this.printListFromTailToHead(pNode.next);
res.add(pNode.val);
}
return res;
}
}
import java.util.ArrayList;
import java.util.Stack;
public class Solution {
public ArrayList<Integer> printListFromTailToHead(ListNode listNode) {
Stack<Integer> nums = new Stack<>();
while (listNode != null)
{
nums.push(listNode.val);
listNode = listNode.next;
}
ArrayList<Integer> res = new ArrayList<>();
while (!nums.isEmpty())
res.add(nums.pop());
return res;
}
}
import java.util.ArrayList;
import java.util.Collections;
public class Solution {
public ArrayList<Integer> printListFromTailToHead(ListNode listNode) {
ArrayList<Integer> res = new ArrayList<>();
while (listNode != null)
{
res.add(listNode.val);
listNode = listNode.next;
}
Collections.reverse(res);
return res;
}
}