首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过按顺序插入下列元素来创建堆

通过按顺序插入下列元素来创建堆
EN

Stack Overflow用户
提问于 2012-06-24 05:12:26
回答 1查看 1.6K关注 0票数 0

问题是:

通过按给定的顺序插入以下元素来创建堆。在每次插入和涓滴之后显示堆。(堆应该实现,以将最高键值保持在顶部。)

5 4 6 7 9 8 1 2

完成堆的创建后,从堆中移除每个元素。每次移除和涓滴后显示堆。指示在每个步骤中删除了哪个元素。

我知道如何在堆中插入一个元素,但是如何创建它?我真的不知道如何从堆中移除元素。

EN

回答 1

Stack Overflow用户

发布于 2012-06-25 08:35:06

我将假设我的答案是二进制堆,有许多不同的堆,但由于这听起来像家庭作业,而且是一个相当基本的问题,我将讨论最基本的堆,这里有:

首先堆是空的。

然后插入5,所以堆现在是:

代码语言:javascript
复制
5

然后在底部插入4。4小于5,所以我们不改变它与它的父母的位置。堆现在是:

代码语言:javascript
复制
   5
  /
 4

然后我们在底部插入6,低于5(始终从左到右插入底部)。我们比较了新插入的节点(6)和它的父节点(5)的值,并意识到为了不违背堆属性,我们必须交换它们:

代码语言:javascript
复制
   6
  / \
 4   5

现在,我们在下一个可用位置插入7(低于4),并与它的父级交换,因为7> 4。然后我们再次交换(或涓滴),作为7>6,并得到:

代码语言:javascript
复制
    7
   / \
  6   5
 /
4

等等..。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11175126

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档