java - 将 Deque 定义为 LinkedList

标签 java linked-list tree stack deque

我正在使用迭代方法检查代码预排序二叉树。看起来他们是这样的:

Deque stack = new LinkedList();

为什么不这样做:

Deque stack = new Deque();

我没有看到他们使用了代码中使用的 LinkedList 中的某些内容。

public class PreOrder {  
  public static List<Integer> preorderTraversalIterative(TreeNode root) {
    List<Integer> preorder = new ArrayList<Integer>();
    if (root == null) {
      return preorder;
    }
    Deque<TreeNode> stack = new LinkedList<TreeNode>(); //Why?
    stack.offerFirst(root);
    while(!stack.isEmpty()) {
      TreeNode cur = stack.pollFirst();
      if (cur.right != null) {
        stack.offerFirst(cur.right);
      }
      if (cur.left != null) {
        stack.offerFirst(cur.left);
      }
      preorder.add(cur.key);
    }
    return preorder;
  }
} 

最佳答案

Deque 是一个接口(interface);如果不提供其抽象方法的所有实现,则无法实例化它,而LinkedList已经做到了这一点。

关于java - 将 Deque 定义为 LinkedList,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50453328/

相关文章:

java - 在android中使用线程连续将异常记录到文件中

algorithm - 从 2-3-4 树计算一组插入和删除的摊销时间

java - 按 HashMap 的更大键重新排序

java - 如何在Java中将标准输出更改为 "UTF-8"

delphi - Delphi 中的 TStringList、动态数组还是链接列表?

c - 在 C 中的链表的末尾添加一个新节点

使用给定的链表创建重复的链表

java - JAXB 解码树结构

C++ 树无法插入值

java - 在 Java 中沮丧