美文网首页剑指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