![图片[1]-应用题4-编程算法牛翰社区-数据算法-牛翰网](https://niuimg.niucores.com/wp-content/uploads/2024/12/7601255955703819792.jpg)
这道题让我们根据所给的关键词序列构造大顶堆,那我们就要知道:
- 堆是什么
- 大顶堆是什么
相关知识点在书的P127-133页
在讲大顶堆之前,我们先谈谈堆是什么?
堆:⑴可以用一棵完全二叉树表示⑵非终端节点与其子节点内存储的数据有优先级关系
根据堆的第二条特性,我们将堆分为小顶堆和大顶堆
小顶堆:某非终端节点的存储值小于等于其子节点
大顶堆:某非终端节点的存储值大于等于其子节点
构造大顶堆的操作:
先根据所给序列顺序列出一个完全二叉树
![图片[2]-应用题4-编程算法牛翰社区-数据算法-牛翰网](https://niuimg.niucores.com/wp-content/uploads/2024/12/4623562393527320461.jpg)
再根据自下而上的顺序进行子节点数据和双亲节点数据的交换(如果某节点的左右孩子值都比该节点大,就选取更大的一个来交换)
![图片[3]-应用题4-编程算法牛翰社区-数据算法-牛翰网](https://niuimg.niucores.com/wp-content/uploads/2024/12/4825161697961800446.jpg)
![图片[4]-应用题4-编程算法牛翰社区-数据算法-牛翰网](https://niuimg.niucores.com/wp-content/uploads/2024/12/2314247822114215673.jpg)
![图片[5]-应用题4-编程算法牛翰社区-数据算法-牛翰网](https://niuimg.niucores.com/wp-content/uploads/2024/12/4029224487454007700.jpg)
当根节点变成序列中的最大值后,再自上而下进行检查。
![图片[6]-应用题4-编程算法牛翰社区-数据算法-牛翰网](https://niuimg.niucores.com/wp-content/uploads/2024/12/2518869796504502564.jpg)
进而得到答案










没有回复内容