最详细的最小堆构建、插入、删除的过程图解

转载:http://blog.csdn.net/hrn1216/article/details/51465270

1.简介

       最小堆是一棵完全二叉树,非叶子结点的值不大于左孩子和右孩子的值。本文以图解的方式,说明

最小堆的构建、插入、删除的过程。搞懂最小堆的相应知识后,最大堆与此类似。

2.最小堆示例

3.最小堆的构建

      初始数组为:9,3,7,6,5,1,10,2

      按照完全二叉树,将数字依次填入。

      填入后,找到最后一个结点(本示例为数字2的节点),从它的父节点(本示例为数字6的节点)

开始调整。根据性质,小的数字往上移动;至此,第1次调整完成。

      注意,被调整的节点,还有子节点的情况,需要递归进行调整。

      第二次调整,是数字6的节点数组下标小1的节点(比数字6的下标小1的节点是数字7的节点),

用刚才的规则进行调整。以此类推,直到调整到根节点。

      以下是本示例的图解:



注意:数字9的节点 将和 数字1的节点 发生对调,对调后,需要递归进行调整,请一定注意。


4.最小堆的元素插入

       以上个最小堆为例,插入数字0。

       数字0的节点首先加入到该二叉树最后的一个节点,依据最小堆的定义,自底向上,递归调整。

       以下是插入操作的图解:



5.最小堆的节点删除

       对于最小堆和最大堆而言,删除是针对于根节点而言。

       对于删除操作,将二叉树的最后一个节点替换到根节点,然后自顶向下,递归调整。

       以下是图解:





本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/292839.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

初探mysql数据库模式(一)

数据库模式是什么? 数据库模式是描述整个数据库的数据结构和数据库底层架构的事务。它分为逻辑模式(俗称:“模式”),外模式(俗称:“子模式”or“用户模式”),内模式(俗称:“存…

数学界最恐怖的存在!54张图读懂2600年数学史,看完跪下了......

全世界只有3.14 % 的人关注了爆炸吧知识“中国现代数学之父”华罗庚曾说过宇宙之大,粒子之微火箭之速,化工之巧地球之变,生物之谜日用之繁,无处不用数学回首往昔数学始终伴随我们左右纵横交错的几何、繁琐复杂的运算难以求解的方程…

R中大数据量数据框的合并慎重使用rbind

最近在用R处理百万级的数据,程序本身是线性扫描,可是随着数据量的增加,运行时间却不是线性增加,一度几天都运行不完。 怀疑是其中rbind函数造成的,查询到这篇文章,也说了这个问题 http://blog.sina.com.cn/…

python顺序结构实验设计_Python程序设计实验报告二:顺序结构程序设计

安徽工程大学 Python程序设计实验报告 班级 物流192 姓名 周立 学号 3190505227成绩 日期 3月4日 指导老师修宇 实验二 顺序结构程序设计(验证性实验) 【实验目的】 (1)掌握数据的输入输出的方法; (2&#…

寒窗苦读十多年,我的毕业论文只研究了一个「屁」

全世界只有3.14 % 的人关注了爆炸吧知识放屁,是公共场合里的社交忌讳。在人头济济的电梯和地铁车厢里,一个呼之欲出的屁,对任何人来说,都是一场心理与生理之间的拉锯战。如果选择放屁,虽然疏通了肠道,但却拉…

Rust 能否替代 C 语言,主宰 Linux 的世界?

最近看到一个程序员工资排行的图,435501份数据,调查显示:Rust 是最赚钱的!随着 Rust 的发展和表现出的优点,它吸引了越来越多的程序员关注。首先,Rust 没有历史包袱,集表达力、高性能、内存安全…

linux jdk环境变量配置

2019独角兽企业重金招聘Python工程师标准>>> 1.官网下载jdk tar包2.移动安装包到/usr/local 目录下,tar zxvf命令进行解压 感觉jdk的名字太难记就改成java了:mv (jdk~~~) java 3.设置环境变量如果是针对单个用户的环境变量控制,可修改~/.bas…

堆排序图片详解

堆排序实例 首先,建立初始的堆结构如图: 然后,交换堆顶的元素和最后一个元素,此时最后一个位置作为有序区(有序区显示为黄色),然后进行其他无序区的堆调整,重新得到大顶堆后&#x…

Java工程转换为Maven工程-b

1. 前言 在开发中经常要建立一个Maven的子工程,对于没有模板的同学来说从Java工程来转换也是一个不错的选择。本文就如何从一个Java工程创建一个Maven工程做了一个介绍,相信对于将一个Java工程转换为Maven工程的工作也是有帮助的。 2. 创建Java工程。 创…

bat从数组中找出相同数字并删除_找到所有数组中消失的数字

题目描述给定一个范围在 1 ≤ a[i] ≤ n ( n 数组大小 ) 的 整型数组,数组中的元素一些出现了两次,另一些只出现一次。找到所有在 [1, n] 范围之间没有出现在数组中的数字。您能在不使用额外空间且时间复杂度为O(n)的情况下完成这个任务吗? 你可以假定…

在IE11下设置SharePoint Server 2013却遇到“需要 Internet Explorer 才能使用此功能。”的解决办法...

就在昨天顺利升级到Windows 8.1 随之IE也升级到了IE11,但是当打开IE11设置SharePoint Server 2013的时候遇到了一些小情况: Figure 1使用Windows 8.1中的IE11设置SharePoint 2013 的时候遇到这样乌龙的事情 这个情况的原因是什么呢? 通常情况…

2分钟,我把网站性能优化了3倍!

大家好,我是鱼皮,最近有同学反映我做的 面试刷题网站 (mianshiya.com)页面加载速度有点慢,所以我决定先简单优化一下。其实我只做了 1 件小事,花了两分钟左右,就把网站的加载速度从 5 秒左右优化…

PHP: 深入了解一致性哈希

2019独角兽企业重金招聘Python工程师标准>>> 学习网址如下所示: http://www.frostsky.com/2014/03/php-consistenthash/ http://www.cnblogs.com/jackluo/archive/2013/06/27/3158847.html http://blog.csdn.net/cywosp/article/details/23397179/ 转载于:https://m…

开机黑屏 仅仅显示鼠标 电脑黑屏 仅仅有鼠标 移动 [已成功解决]

转自:http://blog.sina.com.cn/hyiyun 近些天,有网友的电脑出现:开机后屏幕一片漆黑,但屏幕中央显示有鼠标指针,并且可移动。按键盘上的不论什么键都没有反应,鼠标也仅可移动,单、双击都无效。说…

java23种设计模式个人整理_java23种设计模式-行为型模式之模板方法模式

定义:Define the skeleton of an algorithm in an operation,deferring some steps to subclasses.Template Method lets subclasses redefine certain steps of an algorithm without changing the algorithms structure.定义一个操作中的算法的框架,而…

用VS studio 2008做sql server 报表出现乱码

找了半天,没有发现那里可以修改编码。后面又在网上搜索解决办法,答案少之又少,云里雾里。 后来在csdn上搜索到一片关于水晶报表的乱码解决方案,一试,同样可以解决。 其实并不是编码的问题, 而是因为所选字体不包含中文…

MASA Framework - 整体设计思路

源起年初我们在找一款框架,希望它有如下几个特点:学习成本低只需要学.Net每年主推的技术栈和业务特性必须支持的中间件,给开发同学减负,只需要专注业务就好个人见解:一款好用的框架应该是补充,而不是颠覆或…

​怎么用藏头诗向女友表白......

1 遇到不好使的水龙头时▼2 今天去你家玩好不好(素材来源网络,侵删)▼3 男朋友多会拍照(素材来源网络,侵删)▼4 干饭人有多难▼5 麻将的内涵!(素材来源网络,侵删&…

cvtcolor python opencv_二值分析 | OpenCV + skimage如何提取中心线

点击上方蓝字关注我们微信公众号:OpenCV学堂关注获取更多计算机视觉与深度学习知识问题前几天有个人问了我一个问题,问题是这样的,他有如下的一张二值图像:怎么得到白色Blob中心线,他希望的效果如下:显然Op…