二进制堆数据结构 - 应用程序

时间:2016-12-23 04:34:15

标签: c data-structures binary-tree red-black-tree binary-heap

根据我的理解,

二进制堆(数据结构)用于表示优先级队列ADT。它是一个完整的二叉树,满足堆属性

堆属性 - 如果A是B的父节点,则节点A的密钥(值)按照节点B的密钥排序,并且在堆中应用相同的排序。

首先,它有助于我记住术语,如果将这个数据结构称为 heap 背后的原因。因为,我们还使用术语堆内存

堆的字典含义 - 随意堆积的不整齐的东西。

问题,

学习Reb-Black树& AVL树数据结构,

为什么我们会想到新的数据结构(二进制堆)?

二进制堆是否解决了Red-Black或AVL树不适合的一组问题?

1 个答案:

答案 0 :(得分:4)

二进制堆和红黑树之间的主要区别在于某些操作的性能。

二进制堆

赞成

  • 它构成了一个理想的优先级队列,因为min / max元素(取决于您的实现)始终是O(1)访问时间,因此无需搜索它。
  • 插入新值的速度非常快(平均O(1)O(log(n))最坏情况。

缺点

  • 慢速搜索随机元素。

RB树

赞成

  • 更好的搜索和插入性能。

缺点

  • 较慢的最小/最大搜索次数。
  • 一般的开销更大。

应该注意的是,RB树也可以成为好的调度程序,例如Linux内核v2.6中引入的Completely Fair Scheduler