【发布时间】:2011-03-08 03:26:15
【问题描述】:
我正在做一些涉及堆的作业,并且我了解它们的结构。一个堆必须有满足堆属性的每个节点,
最大堆属性是 除了根以外的每个节点, 堆[父(i)] >= 堆[i]
所以在每个节点上,较高的节点具有较高的数字,较低的节点具有较低的数字。我明白这一点。但是我看不到使用堆来简单地获取列表中最高的 n 个数字。我没有看到一种简单的方法来搜索特定值并返回节点,或者搜索 n 最小的数字(在最大堆中)。两者在二叉搜索树中都相对容易。
你为什么不直接使用一个简单的二叉搜索树呢?或者更好的是平衡二叉搜索树?
编辑: 我应该注意,这不是在寻找家庭作业问题的答案。实际的作业问题是为 insert() 和 extractMax() 函数编写并行 p 堆的伪代码。我已经回答了他们。他们只是让我意识到我并不真正了解堆。
【问题讨论】:
-
@Jeremiah,我在 SO 上搜索了答案,但错过了那个。是的,看起来我是个骗子。我应该结束我的问题吗?
-
不需要。它即将被我们关闭,但抄袭通常被认为是好事,因为问同一个问题的方法不止一种。
-
为我工作,我得到了答案。
-
@Jeremiah,将该评论移至答案,我会接受。
标签: data-structures heap