关于堆(最大堆和最小堆)

时间:2010-06-25 07:08:42

标签: heap

我有这个问题,在堆数据结构中,一个左子可以不仅仅是一个自己级别的右子?我的意思是考虑这三个数字9,5,8并且我想创建一个最大堆数据结构,因此根将是9并且8是它的左子,5是它的右子是真的吗? 请帮助我谢谢

2 个答案:

答案 0 :(得分:2)

那没关系。 max-heap中的节点必须具有较低的子节点,并且最小堆中的节点必须具有较大的子节点。这是唯一的要求。

答案 1 :(得分:0)

Max-Heap属性:

  1. Root是最大元素。 O(1)时间搜索最大元素。
  2. 儿童总是小于任何子树的根。(左右儿童之间没有条件)
  3. 最小元素位于叶元素的某处, O(n / 2)== O(n)时间需要找到最小元素。
  4. Min-Heap属性:

    1. Root是min元素。 O(1)时间搜索mim元素。
    2. 儿童总是大于任何子树的根。(左右儿童之间没有条件)
    3. 最大元素位于叶元素的某处, O(n / 2)== O(n)时间需要找到最大元素。
    4. 因此,Heap不适合搜索,但它用于排序元素数组,因为搜索需要线性O(n)时间。

      对于搜索,我们总是可以选择在O(h)时间内执行相同操作的二进制搜索树(BST)。在最好的情况下,如果BS树是平衡的,它将在O(logn)中进行搜索。