基础数据结构之二叉堆

本文介绍了二叉堆在动态维护、动态中位数、黑盒子、超市贪心问题和多路归并问题中的应用,并详细讲解了如何利用二叉堆解决问题。同时,探讨了哈夫曼树的构造及其在合并果子和荷马史诗编码问题中的运用,提出了将哈夫曼树转化为Trie树来满足特定条件的方法。
摘要由CSDN通过智能技术生成

二叉树

二叉堆一般用于涉及插入、删除、查询最值得题目。往往配合其它题型使用。


对顶堆

对顶堆常用于动态维护的问题。

动态中位数

动态求解前i个数的中位数。

黑盒子

动态求解前u[i]个数第i大的数。


超市

贪心题目。需要用到二叉堆的查询最值、插入和删除功能。

序列

多路归并问题。注意到是求和问题,题目让求m个序列“合并”得到的n个值,如果我们得到了前m - 1个序列“合并”n个值,那么只需要把这n个值看成一个新的序列,转换成两个序列“合并”成n个值的问题。很明显用递归或递推都可以。我们只需要解决如何“合并”两个序列即可。

两个序列如何合并呢?

A : a1 a2 a3 a4 …… an(A已经排好序)
B : b1 b2 b3 b4 …… bn

我们把那n ^ 2的序列写成如下形式 :

b1 + a1 b1 + a2 b1 + a3 …… b1 + an
b2 + a1 b2 +

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值