实现栈的方式

实现栈的方式

Stack<TreeNode> stack = new Stack<>();
Deque<> stack = new LinkedList<>();
Deque<> stack = new ArrayDeque<>();

Stack是继承与Vector的,是线程安全,性能不如后两者,且有set/get方法暴露了不是栈顶的元素;

第二个是基于双向链表,第三个是基于数组,ArrayDeque更快一些,无论是对于栈还是对于队列,jdk建议用ArrayDeque.

但是ArrayDeque不支持null

今天用迭代写二叉树深度遍历,用到栈,用统一的写法实现前中后序的代码统一,要用到null元素来做标记,顶层是null的他的下一个元素就要加入结果集,用ArrayDeque会报空指针异常,其他两个没问题.

posted @ 2022-03-27 23:12  iceTea16  阅读(39)  评论(0)    收藏  举报