【发布时间】:2020-05-15 07:09:30
【问题描述】:
我已经在网上阅读了很多关于“堆”的定义,并且我也阅读了 CLRS 中的定义。网上的大多数定义似乎都说堆是完全二叉树;但是,CLRS 以以下句子开始堆章节:
(二进制)堆数据结构是我们可以查看的数组对象 作为一个近乎完整的二叉树...
我不知道为什么,但 CLRS 称堆“几乎完成”,而我读过的几乎所有其他“堆”定义都称堆“完成”,这让我很困扰。
这让我想到了以下问题:是否有可能有一个不是完整二叉树的堆?
【问题讨论】:
-
看起来他们在这里定义了一个“完全二叉树”,就像通常定义为一个“完美二叉树”一样。
-
我就是这么想的,但我只是想确定一下。谢谢! @WillemVanOnsem
-
当完成是指一棵树,其中左子树必须在右子树之前完成,是的,堆是完整的二叉树。
标签: algorithm data-structures heap