平衡树
Aaplloo
天天都想摆
展开
-
K-D树
学一学K-D树吧。基本上是搬砖K-D树K-D树常用来作空间划分及近邻搜索,是二叉空间划分树的一个特例。通常,对于维度为kkk,数据点数为NNN的数据集,K-D树适用于n<2kn < 2^kn<2k的情形。原理K-D树是每个节点均为kkk维数值点的二叉搜索树,每个节点代表一个超平面,该超平面垂直于当前划分维度的坐标轴,并在该维度上将空间划分为两部分,一部分在其左子树,另一...原创 2020-04-16 08:10:58 · 357 阅读 · 0 评论 -
替罪羊树[Scapegoat Tree]
前言暴力即是优雅 —— 香sister替罪羊树如前言所说,替罪羊树是一种暴力优雅的数据结构。作为一棵平衡树,替罪羊树和其他树都有着共同的使命:维护二叉查找树的平衡使得树高,即树上操作时间复杂度为O(log(n))O(log(n))O(log(n))but,其他的平衡树(例如有旋Treap、AVL、Splay…),几乎都是用旋转操作维护树平衡的。而替罪羊树则是一种不需要旋转,而是采用一种更...原创 2020-03-16 10:18:25 · 304 阅读 · 0 评论 -
[平衡树]伸展树(Splay)
前言本来老师以为我们学过Splay,今天讲LCT,结果我们没学过,于是… …听了会儿课,有点迷,还是自学写篇博客8。才开始学习Splay,可能有些瑕疵,望指出。Splay什么是Splay 假设要对一个二叉搜索树执行一系列查找操作,为了使得总时间最小,那么被查找频率高的节点自然就要放在靠近根的位置。于是想到一个简单的设计方案,在每次查找之后对树进行重构,把被查找的条目搬到离树根近一点的...原创 2020-01-09 15:36:26 · 319 阅读 · 0 评论 -
[模板]非旋Treap(FHQ_Treap)
前言学了有旋Treap,做题时,需要实现可持久化。这时,可以使用方便可持久化的无旋Treap(FHQ_Treap)。一目了然,它和有旋Treap的区别主要在于旋转操作上。那么怎么实现呢?核心操作1——Merge示例假设有两颗子树x,y,且 x 的所有节点的值都小于 y 的所有节点的值,随机权值 key 都以小根堆的形式存储。此时要合并 x , y 。我们先比较它们的根的随机权值,发现1...原创 2019-11-30 15:22:19 · 184 阅读 · 1 评论 -
[模板]Treap
前言今天学习了平衡树中的Treap,打了一道模板题不会做了,写个博客总结一下吧。概念二叉查找树二叉查找树(Binary Search Tree)是基于插入思想的一种在线的排序数据结构。它又叫二叉搜索树(Binary Search Tree)、二叉排序树(Binary Sort Tree),简称BST。这种数据结构的基本思想是在二叉树的基础上,规定一定的顺序,使数据可以有序地存储。二叉查找...原创 2019-11-25 20:56:14 · 218 阅读 · 0 评论