实现栈的方式
实现栈的方式
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会报空指针异常,其他两个没问题.

浙公网安备 33010602011771号