剑指Offer面试题5 Java解法

题目:输入一个链表,从尾到头打印链表每个节点的值。 
输入描述:
输入为链表的表头
输出描述:
输出为需要打印的“新链表”的表头
该题的解题思路是递归或者是栈:
递归解法:
public static void printListReverse1(ListNode headNode){
       if (headNode != null){
           if(headNode.next != null){
               printListReverse1(headNode.next);
           }
       }
       System.out.println(headNode.val);

    }
栈的解法:
 public static void printListReverse(ListNode headNode){
        Stack<ListNode> stack = new Stack<ListNode>();
        while (headNode != null){
            stack.push(headNode);
            headNode = headNode.next;
        }
        while (!stack.empty()){
            System.out.println(stack.pop().val);
        }
    }
还有这种递归方法挺难理解的,现在我还是不咋理解哈哈,debug一下看到了程序走的步骤,反正让我写我是写不出来,有兴趣的可以思考下:
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;
    }
}  



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值