Java堆与平衡树

Java堆与平衡树,java,binary-search-tree,binary-heap,Java,Binary Search Tree,Binary Heap,哪种数据结构可用于存储一组整数,以便在O(logn)时间内完成以下每个操作,其中N是元素数 删除最小元素 如果集合中尚未存在元素,则插入该元素 选择一个选项 可以使用堆,但不能使用平衡的二进制搜索树 可以使用平衡的二进制搜索树,但不能使用堆 平衡二进制搜索和堆都可以使用 不能使用平衡二叉搜索树或堆 因为 平衡二叉树的叶子中有最小的元素。因此,一旦识别出最小的元素,就不会产生开销。要识别,必须检查节点的日志(N)数量 插入和元素时,您所要做的就是遍历,直到找到位置为止(您将必须遍历最多个log

哪种数据结构可用于存储一组整数,以便在O(logn)时间内完成以下每个操作,其中N是元素数

  • 删除最小元素
  • 如果集合中尚未存在元素,则插入该元素
选择一个选项

  • 可以使用堆,但不能使用平衡的二进制搜索树
  • 可以使用平衡的二进制搜索树,但不能使用堆
  • 平衡二进制搜索和堆都可以使用
  • 不能使用平衡二叉搜索树或堆
  • 因为

  • 平衡二叉树的叶子中有最小的元素。因此,一旦识别出最小的元素,就不会产生开销。要识别,必须检查节点的日志(N)数量
  • 插入和元素时,您所要做的就是遍历,直到找到位置为止(您将必须遍历最多个log(N)节点),并将新元素添加为right或left子元素
  • 但在heap中,插入一个元素使其称为buildheap,即Nlog(N)

  • 检查元素是否存在于树中可以通过在平衡二叉树中以恒定时间进行少量修改来完成。

    我认为第二种方法“可以使用平衡二叉搜索树,但不能使用堆”,因为插入和查找平衡搜索树的最坏情况复杂性是logN

    我们不能使用堆,因为,例如在二进制堆中,速度越快,查找的最坏情况是N

    A balanced binary search tree can be used, but not a heap