剑指offer java版

【剑指offer】问题6:从尾到头打印链表

2019-02-13  本文已影响0人  蛋花汤汤

题目:输入一个链表的头结点,从尾到头反过来打印出每个节点的值。

先上代码。

    public ArrayList<Integer> printListFromTailToHead(ListNode listNode) {
        ArrayList<Integer> ret = new ArrayList<Integer>();
        func(ret, listNode);
        return ret;
    }
    public void func(ArrayList<Integer> list, ListNode node){
        if(node == null)
            return ;
        func(list, node.next);
        list.add(node.val);
    }

利用递归可以很方便的求解此题。但需要注意在调用层级很深的情况下,递归的方式可能会导致栈溢出。因此可以使用另外一种方式求解:借助辅助栈(递归本身也是栈的逻辑)。遍历链表的同时,将每一个节点入栈,遍历结束后,再将栈内的数据依次弹出即可。

上一篇 下一篇

猜你喜欢

热点阅读