c++ - 堆二叉树是否必须完成才能成为堆?

标签 c++ heap

我对 C++ 中的堆有一点困惑,我想更好地理解它。

二叉树必须是完整的(满二叉树)才能被归类为堆吗?

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

网上资源state heaps的定义是必须是完全二叉树。我的教授说堆是具有两个特殊属性的二叉树。

最佳答案

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

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

但是,如果您担心 C++ 实现,我想确切的术语并不是您所追求的——二叉堆很适合使用数组轻松实现,而且它适用于完整的二叉树,而不仅仅是完美的二叉树。

关于c++ - 堆二叉树是否必须完成才能成为堆?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50429969/

相关文章:

php - 加密库冲突(MCrypt、libgcrypt)

c++ - Dijkstra 算法和贪心策略

c++ - Allegro 能否在运行时更新操纵杆的数量?

python - heapify的O(n)算法

arrays - 有效合并多集的 n 个元素的数据结构

c++ - SDL2 : How to keep aspect ratio when resizing the window

python - 使用堆有助于提高字符串重新排列的性能

c - C中Heap实现中的BubbleUp方法

c++ - 将元组 vector 构造成堆

c++ - Boost ASIO TCP计时器客户端错误 “resolve: The specified class is not found”