书中方法一:反转应该立刻想到栈,利用一个栈完成链表的反转打印,但是用了额外的O(n)空间。
public void printFromTail(ListNode first){
Stack<ListNode> stack = new Stack<ListNode>();
while(first != null){
stack.push(first);
first = first.next;
}
while(!stack.isEmpty()){
System.out.print(stack.pop().val);
}
}
书中方法二:利用递归,在递归中先调用递归,后处理该节点,达到了栈的效果。
public void printFromTail2(ListNode first){
if(first == null)return;
printFromTail2(first.next);
System.out.print(first.val);
}