堆二进制树是否必须完成才能成为堆?

时间:2018-05-19 22:18:03

标签: c++ heap

我对c ++中的堆有点混淆,我想更好地理解它。

二进制树是否必须完整(完整二叉树)才能被归类为堆?

堆必须是完整的二叉树吗?教授的回答是否定的,但我没有和教授核实过。

在线资源状态堆定义是它们必须是完整的二叉树。我的教授说堆是一个有两个特殊属性的二叉树。

1 个答案:

答案 0 :(得分:0)

我假设您特别关注二进制堆。

在键排序属性之上,二进制树的最低级别必须左对齐,并且上面的所有级别必须已满,才能被归类为二进制堆。最低级别不必是满的。这种二叉树通常表示为完整,如果最低级别已满,则表示为完美

但是如果你担心C ++的实现,我认为确切的术语并不是你所追求的 - 二进制堆对于使用数组的简单实现来说很好,而且对于完整的二叉树而言,它可以正常工作,而不仅仅是完美的二进制树。