首页 > 其他分享 >Treap引入

Treap引入

时间:2023-10-16 11:44:46浏览次数:36  
标签:treap BST Treap heap 深度 引入 引理

前置知识

treap是由BST和heap组合而成的数据结构,这一点也体现在它的名字上:treap=tree+heap

BST中,每个节点的左儿子都比它小,右儿子都比它大,可以实现有序的遍历,但是可能因为数据特殊的排列方式,而退化为线性

heap中,每个父节点都是当前子树内权值最大(或最小)的点。

在BST的基础上加一个控制树深度的功能,就得到了一个简单的平衡树。

与AVL的人为控制深度不同,Treap借由heap的性质,来实现对树深度的压缩。

引理

一棵随机生成的二叉树,其期望深度是logN    (证明略)

(因为Treap的实现依赖此引理,所以在某些极端情况下时间复杂度有可能退化,但是可能性非常非常小)

 

实现

 

标签:treap,BST,Treap,heap,深度,引入,引理
From: https://www.cnblogs.com/smartljy/p/17767010.html

相关文章

  • 天地图 vue引入
    官网使用引入基础引入创建......
  • go - 同级目录引入其它包
    4.同级目录引入其它包:(1).test/calc/add.go:packagecalc//包名也可以是其它名字,推荐为当前的目录名称varAgeint=10funcAdd(inta,intb)int{//要想外部调用,首字母大写returna+b}(2).test/calc/sub.go:packagecalcfuncSub(inta,intb)i......
  • BST-Treap名次树指针实现板子 Ver2.0
    为了更好的阅读体验,请点击这里这里只有板子没有原理QWQ可实现1.插入x数2.删除x数(若有多个相同的数,只删除一个)3.查询x数的排名(排名定义为比当前数小的数的个数+1)4.查询排名为x的数5.求x的前驱(前驱定义为小于x,且最大的数)6.求x的后继(后继定义为大于x,且......
  • Cloud Kernel SIG 月度动态:发布多个 ANCK 版本,引入多个第三方硬件驱动
    CloudKernelSIG(SpecialInterestGroup):支撑龙蜥内核版本的研发、发布和服务,提供生产可用的高性价比内核产品。01SIG整体进展1.龙蜥社区完成申威架构的ISO镜像制作,可正常安装启动运行。2.硬件驱动方面引入基线的L0级别的硬件驱动到社区。3.引入浪潮自研的inspur-drm显......
  • vue动态引入组件
    vue动态引入组件,正常情况是页面渲染时动态加载该页面组件,还能进行细化动态加载情况,比如弹窗组件动态导入:除了路由懒加载,你还可以在其他地方使用动态导入来按需加载组件。例如,在某个按钮的点击事件中异步加载一个组件:import('./components/MyComponent.vue').then((module)=>{......
  • linux 中 awk直接引入外部变量
     001、[root@pc1test1]#lsa.txt[root@pc1test1]#a=4[root@pc1test1]#cata.txt1[root@pc1test1]#awk'{for(i=1;i<="'$a'";i++)print"xx"}'a.txtxxxxxxxx 。 ......
  • 浅谈 Angular 引入 Transfer State 机制的动机
    在Angular之中,TransferState是一个用于在服务器端渲染(SSR)中传递状态的机制。它可以解决应用程序的一些重要问题,比如性能问题和用户体验问题。在这篇文章中,我将详细解释TransferState的概念,工作原理以及如何在Angular应用程序中使用它。首先,我们需要了解什么是服务器......
  • vue3+vite import 引入ThreeBSP库 报错
    我在网上查了一下先用npm下载了三方包npmithree-js-csg再使用constThreeBSP=require('three-js-csg')(THREE)的方法引入出现了这个报错查了是因为require是webpack里的vite不支持所以找不到然后我就尝试使用import的方法引入importThreeBSPfrom'three-js......
  • 【webapp】在 JSP 页面中引入标签库和使用自定义标签
    自定义标签的基本步骤:创建自定义标签库文件:首先,您需要创建一个包含自定义标签定义的标签库文件(通常以 .tld 扩展名结尾)。该文件描述了标签的名称、属性和处理逻辑。引入标签库:在JSP页面中,通过使用 <%@taglib%> 指令来引入自定义标签库。该指令告诉JSP引擎在页面中......
  • Asp-Net-Core开发笔记:快速在已有项目中引入EFCore
    前言很多项目一开始选型的时候没有选择EFCore,不过EFCore确实好用,也许由于种种原因后面还是需要用到,这时候引入EFCore也很方便。本文以StarBlog为例,StarBlog目前使用的ORM是FreeSQL,引入EFCore对我来说最大的好处是支持多个数据库,如果是FreeSQL的话,服务注册的时候是单......