Java堆与平衡树

时间:2016-06-03 08:20:22

标签: java binary-search-tree binary-heap

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

  • 删除最小元素
  • 如果元素尚未出现在
  • 中,则插入该元素

选择其中一个选择

  1. 可以使用堆,但不能使用平衡的二叉搜索树
  2. 可以使用平衡二进制搜索树,但不能使用堆
  3. 可以使用平衡二进制搜索和堆
  4. 既不能使用平衡二进制搜索树也不能使用堆

2 个答案:

答案 0 :(得分:0)

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

我们不能使用Heap,因为,例如在Binary Heap中,这是更快的,最坏的情况是N.

答案 1 :(得分:-1)

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

由于,

  1. 平衡二叉树具有叶子中最小的元素。因此,一旦识别出最小元素,就没有开销。要识别,您必须检查log(N)节点数。
  2. 当插入和元素时,你所做的只是遍历,直到你找到位置(你必须遍历最大的log(N)节点)并将新元素添加为右或左子。
  3. 但是在堆中,插入一个元素使它调用构建堆,即Nlog(N)。
  4. 检查树中是否存在元素可以在平衡二叉树中以恒定时间进行修改。