二叉搜索树:堆:最大堆的建立,插入和删除

本文介绍了堆这一数据结构,特别是最大堆的概念。最大堆是一种按照优先级高低排列的数据结构,其中每个节点的优先级都高于其左右子节点。堆的常见操作包括建堆、插入和删除。在删除时,删除根节点并将最后一个元素替换到根位置,通过循环找到适当位置以保持堆的有序性。插入操作则是在数组末尾按顺序添加元素,然后通过比较和调整确保每个节点都大于其子节点。最大堆的建立过程类似删除,通过自底向上地调整元素位置完成有序堆的构建。
摘要由CSDN通过智能技术生成

前面我们讲到栈和队列的时候,这两种数据结构都是按时间的先后顺序来排列,如栈是按先进后出(FILO),后入先出的原则排列。而队列是按先进先出(FIFO)的原则排序。但有时候按这种时间原则的数据结构不能满足用户的一些需求,例如CPU需要执行程序的优先级别,很多时候不能靠时间顺序,有些程序重要性更高的时候,应该优先被调用,所以应该用一种按优先级高低来排列的数据结构,数据结构中的每一个对象都有各自的优先级,我们从这个结构序列中取出元素的原则是按优先级的高低来取出,而不是进入队列的先后顺序。这里就要用到一种数据结构:堆。如果我们要用二叉搜索树来实现堆这一结构,怎么做?

这里举例用最大堆,最大堆的二叉搜索树结构是,从根结点开始,每一个结点的优先级都比它的左右子树高。这样来实现的话,我们可以把二叉搜索树用一种平衡的,排好序的结构来存储从而提高后面操作的效率,那就是用完全二叉树。

堆最重要的特点就是结构有序性。用完全二叉树的结构,有序性分两种,一种是最大堆,也就是从根结点开始,任一结点的元素优先级都比它的左右子树高。第二种是最小堆,也就是从根结点开始,任一结点的元素优先级都比它的左右子树低。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值