首页 > 其他分享 >平衡树

平衡树

时间:2023-08-10 21:26:06浏览次数:37  
标签:插入 BST 点权 Treap 权值 平衡

【模板】普通平衡树&【模板】普通平衡树(数据加强版)

考虑最简单的平衡树——Treap(Tree+heap),从它的名字上就可以看出它是树和堆结合的产物。

那它究竟是怎么样呢?别着急,要研究它,必须研究它的基础版本——Binary Search Tree,二叉搜索树,简称BST。

简单来说,它需要满足对于任意一点,它的左子树内的任意点的点权均小于它的权值,右子树内的任意点的点权均大于它的权值。(不考虑重复元素)

它的中序遍历点权升序

对于插入一个值,可以在BST中根据权值大小向左/右子树进入,最后插入在叶子节点。

删除操作太麻烦,不说了。

最坏情况下会退化成一条链。

Treap

下面正式进入正题。

我们首先给出一棵已经建立的合法的Treap:

20210609215950447

如图,key表示实际权值,priority表示随机的优先级。

顾名思义,Treap不仅要满足BST的性质(对于key),还有满足二叉堆的性质(对于priority)(使用大根堆或小根堆均可)。

每个节点存储6个信息:

  • 左儿子
  • 右儿子
  • 键值
  • 随即优先级
  • 数量
  • 子树大小

最后两个主要处理与排名相关的操作。

然后就是左旋和右旋。

不想说了,参考这篇题解算了:https://blog.csdn.net/yanweiqi1754989931/article/details/117755252

代码

强调实现时的注意事项:

  • mt19937 生成的随机数为无符号整型
  • 插入、删除后记得上推更新
  • 很多函数可以对称的写,如左旋/右旋,前驱/后继,
  • 加强版 grank 找到不存在的点需要返回1,因为有可能这个值是大于已插入的所有数的
  • 左旋右旋随便画个图就能一目了然

标签:插入,BST,点权,Treap,权值,平衡
From: https://www.cnblogs.com/wscqwq/p/17621520.html

相关文章

  • 在感觉的海洋中找寻平衡:幼儿感觉统合训练的探索之旅
    (仅供参考)在我的生活中,我一直关注着孩子们如何在这个充满感觉的世界中找寻他们的位置。特别是那些在处理日常生活中感觉输入信息存在困难的孩子,我看到他们在尝试理解和响应周围环境的感觉信息时的挣扎。于是,我开始探索一种名为“感觉统合训练”(SensoryIntegrationTraining)的方法......
  • luogu P4200 千山鸟飞绝 题解 【一维数组套平衡树】
    目录题目解题思路code题目题目链接解题思路首先,此题有明显的插入、删除、查找,所以必须要使用平衡树。考虑如何使用平衡树维护每个鸟的状态。发现很不方便,因为鸟的位置改变,整个平衡树的值都要修改。考虑针对每个节点开一颗平衡树,这样就有\(3e4\times3e4\)棵树。这显然太多了......
  • SD130T带充电平衡,双节锂电池充电控制芯片
    SD130T是一款完整的双节锂离子电池充电器,带电池正负极反接保护,采用恒定电流/恒定电压线性控制。只需较少的外部元件数目使得SD130T便携式应用的理想选择。SD130T可以适合USB电源和适配器电源工作。由于采用了内部PMOSFET架构,加上防倒充电路,所以不需要外部检测电阻器和隔离二极管......
  • 平衡二叉查找树--splay
    splay树,又称伸展树,是一种平衡二叉查找树,通过不断把每个节点旋转到根节点能够在O(logN)的时间内完成插入、查找以及删除的操作,并且能保持平衡不会退化成链一、关于二叉查找树首先,二叉查找树肯定是个二叉树(废话),每个节点的左子节点的值小于该节点的值小于右子节点的值。这......
  • 平衡树从入门到入土【待更新】
    O.写在前面本文的题目叫「平衡树从入门到入土」。因为我想让每一个学过树形结构的同学,都能够学会这种十分重要的数据结构。不论是上课睡觉没有听还是准备提前预习的同学,都能从这篇文章受益。平衡树的核心思想在于如何保证「平衡」——显然,也是最难理解的。大部分平衡树是通过「......
  • python 灰世界白平衡算法
    白平衡是图像处理比较常见的一个概念,在采集图像的过程中,相机的感光元件或者镜头会对原始色彩造成影响,而白平衡技术通常可以用来校正这种光线和镜头对颜色影响。灰度世界算法(GrayWorld)假设认为,一幅彩色图像中,RGB三个通道的颜色平均值是趋于同一个灰度值K的,所以如果当前的通道的......
  • 110. 平衡二叉树
    给定一个二叉树,判断它是否是高度平衡的二叉树。本题中,一棵高度平衡二叉树定义为:一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过1。示例1:输入:root=[3,9,20,null,null,15,7]输出:true#Definitionforabinarytreenode.#classTreeNode:#def__init__(se......
  • 【阅读笔记】一种暗通道优先的快速自动白平衡算法
    解决问题:自动白平衡算法中存在白色区域检测错误导致白平衡失效的问题,作者提出了一种基于暗通道优先的白平衡算法。算法思想:图像中白色区域或者高饱和度区域的光线透射率较低,根据以上特性利用暗通道法计算图像中白色区域。算法概述:作者使用何凯明提出的基于暗通道优先的方法......
  • 无旋平衡树(范浩强Treap)平均时间复杂度证明
    范浩强Treap是一种应用广泛的数据结构(可参考OI_Wiki),然而网上难以找到比较严谨的复杂度证明.本文将严格证明\(n\)个结点的Treap的期望树高为\(\Theta(\logn)\),由于一次分裂或合并操作的递归深度恰为树高,这便说明了一次操作的平均时间复杂度为\(\Theta(\logn)\).首先,由......
  • 【项目实战】Kafka 重平衡 Consumer Group Rebalance 机制
    ......