算法通关村第十四关|青铜|堆结构

堆是将一组数据按照完全二叉树的存储顺序,将数据存储在一个一维数组中的结构。

大顶堆:任意节点的值均大于等于它的左右孩子,并且最大的值位于堆顶,即根节点处。

小顶堆:任意节点的值均小于等于它的左右孩子,并且最小的值位于堆顶,即根结点处。

堆的构造:

对于一个节点,当它在数组中的下标为 i 时:i 为 0 ,为根节点,i >= 1 时,父节点为 (i - 1) / 2 。

将数组元素依次排到完全二叉树上,然后从最后一个元素开始寻找父元素并且比较大小,以此为依据来判断是否需要交换,过程结束后前一个元素继续进行该过程,直到根节点也满足要求。

堆的插入操作:

将新元素插入到保持完全二叉树的最后一个位置,然后顺着这条支路一直向上调整,每前进一层就要保证其子树都满足堆的规则,否则就去处理子树,直到完全满足要求。

堆的删除操作:

堆中的数据进行操作一般都是针对堆顶的元素。

删除的时候一般是删除堆顶元素,先将堆中的最后一个元素和堆顶元素进行替换,然后删除堆中最后一个元素,之后再从根开始逐步与左右子树比较,谁大就把谁移上去,不断比较,直到完全满足要求。

如果对您有帮助,请点赞关注支持我,谢谢!❤
如有错误或者不足之处,敬请指正!❤
个人主页:星不易
算法通关村专栏:不易|算法通关村

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值