美文网首页剑指offer java版
【剑指offer】问题6:从尾到头打印链表

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

作者: 蛋花汤汤 | 来源:发表于2019-02-13 20:35 被阅读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);
    }

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

相关文章

网友评论

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

    本文链接:https://www.haomeiwen.com/subject/xzhjeqtx.html