从尾到头打印链表
题目
输入一个链表,按链表值从尾到头的顺序返回一个ArrayList。
解题思路
- 栈
public ArrayList<Integer> printListFromTailToHead(ListNode listNode) {
LinkedList<Integer> stack = new LinkedList<>();
while (listNode != null) {
stack.addLast(listNode.val);
listNode = listNode.next;
}
ArrayList<Integer> res = new ArrayList<>();
while (!stack.isEmpty()) {
res.add(stack.pollLast());
}
return res;
}
- 递归:当链表过长时,会导致栈溢出
public ArrayList<Integer> printListFromTailToHead(ListNode listNode) {
ArrayList<Integer> res = new ArrayList<>();
print(res,listNode);
return res;
}
private void print(ArrayList<Integer> res, ListNode listNode) {
if (listNode == null) return;
print(res, listNode.next);
res.add(listNode.val);
}
当前内容版权归 Hayden Yang 或其关联方所有,如需对内容或内容相关联开源项目进行关注与资助,请访问 Hayden Yang .