题目描述
输入一个链表,从尾到头打印链表每个节点的值。
解题思路
- 递归;
- 用栈。
这里递归不是尾递归,所以和用栈效果一样,不过代码非常简洁。
递归中用的 list 是同一个,所以 list 的初始化在函数体外。
- 递归:
import java.util.ArrayList;
public class Solution {
private ArrayList<Integer> list = new ArrayList<>();
public ArrayList<Integer> printListFromTailToHead(ListNode listNode) {
if (listNode != null) {
printListFromTailToHead(listNode.next);
list.add(listNode.val);
}
return list;
}
}
- 用栈:
import java.util.ArrayList;
import java.util.Stack;
public class Solution {
private ArrayList<Integer> list = new ArrayList<>();
public ArrayList<Integer> printListFromTailToHead(ListNode listNode) {
if (listNode == null)
return list;
Stack<Integer> stack = new Stack<>();
while (listNode != null) {
stack.push(listNode.val);
listNode = listNode.next;
}
while (!stack.isEmpty())
list.add(stack.pop());
return list;
}
}
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于