最小堆 构建、插入、删除的过程图解
来源:互联网 发布:淘宝大学哪家商学院好 编辑:程序博客网 时间:2024/06/05 15:42
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.最小堆的节点删除
对于最小堆和最大堆而言,删除是针对于根节点而言。
对于删除操作,将二叉树的最后一个节点替换到根节点,然后自顶向下,递归调整。
以下是图解:
注意:
如您发现本文档中有明显错误的地方,
或者您发现本文档中引用了他人的资料而未进行说明时,请联系我进行更正。
转载或使用本文档时,请作醒目说明。
必要时请联系作者,否则将追究相应的法律责任。
note:
If you find this document with any error ,
Or if you find any illegal citations , please contact me correct.
Reprint or use of this document,Please explain for striking.
Please contact the author if necessary, or they will pursue the corresponding legal responsibility.
- 最小堆 构建、插入、删除的过程图解
- 最小堆 构建、插入、删除的过程图解
- 最详细的最小堆构建、插入、删除的过程图解
- 最小堆的调整、插入和删除
- 最大最小堆的插入与删除
- 堆的构建、堆的插入、堆的删除、堆排序
- 最小堆的插入
- 面试题95:最小堆的调整、插入和删除
- 最大堆-插入/删除/排序-图解
- 最小堆的删除
- 最大堆,最小堆插入/删除以及最大堆的排序
- C++实现最小堆及插入,调整顺序,删除堆顶元素的操作
- 最大堆的插入/删除/调整/排序操作(图解+程序)(JAVA)
- 最大堆的插入/删除/调整/排序操作(图解+程序)(JAVA)
- 删除最小堆的最小值
- 堆的插入 删除 排序
- 堆的创建、插入、删除
- 堆的创建,插入,删除
- HDU 4751 (判断二分图)
- c++基础学习之深拷贝
- nyoj 290 动物统计加强版 <字典树>
- iOS开发总结之UITableView表格数据的批量操作2
- 机器学习的最优化问题
- 最小堆 构建、插入、删除的过程图解
- linux下卸载自带jdk以及安装jdk
- 动态规划-3016-不能后退的格子
- iOS内存话题: 弱引用下的懒加载
- Make My Ostream!
- 【C语言】实现一个通讯录(三:加入文件读写)
- Apache Zeppelin使用入门指南:添加外部依赖
- 模仿dbutils的jdbc框架
- H3C模拟器---HCL使用心得