剑指offer:从头到尾打印链表
题目描述
输入一个链表,从尾到头打印链表每个节点的值。
解题思路
方法一:借助递归实现
public class Solution { ArrayList<Integer> arrayList=new ArrayList<Integer>(); public ArrayList<Integer> printListFromTailToHead(ListNode listNode) { if(listNode!=null){ this.printListFromTailToHead(listNode.next); arrayList.add(listNode.val); } return arrayList; } } 方法二:借助堆栈的“后进先出”实现(使用递归实现有可能会造成函数调用栈溢出,显然用栈基于循环实现的代码鲁棒性要更好一些)
import java.util.ArrayList; import java.util.Stack; public class Solution { public ArrayList<Integer> printListFromTailToHead(ListNode listNode) { Stack<Integer> stack=new Stack<Integer>(); while(listNode!=null){ stack.push(listNode.val); listNode=listNode.next; } ArrayList<Integer> list=new ArrayList<Integer>(); while(!stack.isEmpty()){ list.add(stack.pop()); } return list; } }
浙公网安备 33010602011771号