据我所知,
二进制堆(数据结构)用于表示优先级队列ADT。它是一个完全满足堆属性的二叉树。
堆属性-如果A是B的父节点,则节点A的键(值)相对于节点B的键排序,整个堆应用相同的顺序。
首先,它帮助我记住术语heap,如果将此数据结构定义为heap背后有原因的话。因为,我们还使用术语堆内存。
字典里堆的意思-一堆杂乱无章的东西。
问题,
在学习了reb black tree和avl tree的数据结构之后,
为什么我们要考虑新的数据结构(二进制堆)?
二进制堆是否解决了红黑树或avl树不适合的一组问题?

最佳答案

二进制堆和红黑树的主要区别在于某些操作的性能。
二进制堆
赞成的意见
它是一个理想的优先级队列,因为min/max元素(取决于您的实现)总是O(1)访问时间,所以不需要搜索它。
插入新值的速度也非常快(O(1)平均,O(log(n))最坏情况)。
欺骗
缓慢搜索随机元素。
rb树
赞成的意见
更好的搜索和插入性能。
欺骗
最低/最高搜索速度较慢。
一般来说,更多的开销。
应该注意的是,rb树也可以成为很好的调度程序,比如linux内核v2.6中引入的Completely Fair Scheduler

08-16 20:30