博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
数据结构之堆
阅读量:6550 次
发布时间:2019-06-24

本文共 449 字,大约阅读时间需要 1 分钟。

堆可用于实现优先队列。

 

堆有两个性质:结构性和堆序性。

 

堆的结构性:

堆是一棵被完全填满的二叉树,有可能的例外是在底层,底层上的元素从左到右填入。这样的树称为完全二叉树

一棵高为h的完全二叉树有2^h~2^(h+1)-1个节点。这意味着,完全二叉树的高是logN下取整。

完全二叉树很有规律,可用一个数组表示而不需要指针。对于数组中任一位置i上的元素,其左儿子在2i上,右儿子在(2i+1)中,它的父亲则在位置i/2下取整上。(注:从数组下标1开始存放完全二叉树。)

 

堆的堆序性:

在一个堆中,对于每一个节点X,X的父亲中的关键字小于(或等于)X中的关键字,根节点除外(它没有父节点)。——这是最小堆,最小元在根上。

在一个堆中,对于每一个节点X,X的父亲中的关键字大于(或等于)X中的关键字,根节点除外(它没有父节点)。——这是最大堆,最大元在根上。

 

综上,我们可以用递归的方法定义堆:

(1)首先,堆是一个完全二叉树;

(2)其次,根上为最大(或最小)元素;

(3)最后,任意子树也是一个堆。

转载地址:http://mouco.baihongyu.com/

你可能感兴趣的文章
如何删除mysql数据库的日志文件
查看>>
Swift/OC计时器使用方法
查看>>
AD的备份与还原
查看>>
和第三代动词算子式代码生成器光配合的前后端分离示例代码
查看>>
502 Bad Gateway 错误的解决办法
查看>>
convirt(二)—— 创建第一台虚机
查看>>
足球——2011-2012意甲球队队标
查看>>
mysql性能优化
查看>>
网站出现安全证书过期的原因
查看>>
Vim编辑器的使用
查看>>
python实用小工具介绍
查看>>
CentOS 6.5 64 安装 mysql-5.7.19
查看>>
DNS基本原理
查看>>
iOS 中json解析数据出现中文乱码的问题
查看>>
spring工程在eclipse 运行报错:找不到ContextLoaderListener
查看>>
java连接AD域
查看>>
常见下载节点
查看>>
linux: bash登录的显示信息设置以及环境配置文件.
查看>>
Spring boot环境搭建(二)- 代码分离、日志文件配置
查看>>
搭建2008 R2 IIS网络负载平衡
查看>>