我始终认为,堆和优先级队列是同义词-一个抽象的数据结构支持insert
,findMin
和deleteMin
操作。
一些文献似乎同意我的观点-例如克里斯·冈崎(Chris Okasaki)的“纯功能数据结构”(第3章)。
另一方面,维基百科的堆页面将其定义为基于树的数据结构,并指出堆是优先级队列的具体实现。
我很难与一个以上的堆实现实现这一点-左派堆,二项式堆,展开堆...
可以用不同的数据结构实现堆这一简单事实,从定义上来说并不意味着它是一种抽象的数据结构吗?如果是这样,优先级队列是否有实际差异?