从尾到头打印链表

题目描述

输入一个链表,按链表从尾到头的顺序返回一个ArrayList。
 

思路分析

  • 两种思路:
  • 1,递归 ,时间复杂度O(n), 空间复杂度O(n)
  • 2,使用栈(后进先出), 时间复杂度O(n), 空间复杂度O(n)

 

代码

//使用栈
import java.util.ArrayList; public class Solution { public ArrayList<Integer> printListFromTailToHead(ListNode listNode) { ArrayList list = new ArrayList(); Stack<Integer> stack = new Stack<>(); while(listNode != null){ stack.push(listNode.val); listNode = listNode.next; } while(!stack.empty()){ list.add(stack.pop()); } return list; } }

  

//使用递归
import java.util.ArrayList;
public class Solution {
    ArrayList<Integer> list = new ArrayList();
    public ArrayList<Integer> printListFromTailToHead(ListNode listNode) {
        if(listNode != null){
            printListFromTailToHead(listNode.next);
            list.add(listNode.val);
        }
        return list;
    }
}

  

posted @ 2020-04-11 13:20  Coding-Liu  阅读(194)  评论(0)    收藏  举报