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

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

先上代码。

    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);
    }

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

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容