首页
学习
活动
专区
工具
TVP
发布

伸展

没看懂,多看几遍吧 1 简介: 伸展树,或者叫自适应查找树,是一种用于保存有序集合的简单高效的数据结构。伸展树实质上是一个二叉查找树。...由于伸展树可以适应需求序列,因此他们的性能在实际应用中更优秀。 伸展树支持所有的二叉树操作。伸展树不保证最坏情况下的时间复杂度为O(logN)。伸展树的时间复杂度边界是均摊的。...4 基本的自底向上伸展树:     应用伸展(splaying)技术,可以得到对数均摊边界的时间复杂度。     在旋转的时候,可以分为三种情况: 1、zig情况。  ...5 基本伸展树操作: 1、插入:     当一个节点插入时,伸展操作将执行。因此,新插入的节点在根上。 2、查找:     如果查找成功(找到),那么由于伸展操作,被查找的节点成为树的新根。...6 自顶向下的伸展树:     在自底向上的伸展树中,我们需要求一个节点的父节点和祖父节点,因此这种伸展树难以实现。因此,我们可以构建自顶向下的伸展树。

1.2K90

伸展树(splay tree)

这是这点不同导致了伸展树的效果是很好的。 下面的这组图是自底向上的展开策略 ? ? ? 正是在这种情形下的双层伸展,才导致树平均每次会降低一半深度。...这样的伸展操作将深度大大降低了。...测试结果也说明了伸展树并没有避免生成斜二叉树,但是它在后续的伸展过程中不会出现恶性循环,使得树最终还可能是斜二叉树。一般而言经过为数不多的操作之后,伸展树都将几乎是平衡的,并且深度是较浅的。...伸展树的表现是良好的,它的代码运行的很快。...因此,我们通常使用自顶向下的伸展树,它只用到了O(1)的额外空间,但是却保持了O(logN)的摊还时间。无疑,自顶向下的伸展树比自底向上的伸展树要好得多。

1.2K10
您找到你想要的搜索结果了吗?
是的
没有找到

伸展树的特性及实现

伸展树无需时刻都严格地保持全树的平衡,但却能够在任何足够长的真实操作序列中,保持分摊意义上的高效率。...伸展树也不需要对基本的二叉树节点结构,做任何附加的要求或改动,更不需要记录平衡因子或高度之类的额外信息,故适用范围更广。...逐层伸展每访问过一个节点之后,随即反复地以它的父节点为轴,经适当的旋转将其提升一层,直至最终成为树根。...在各次访问之后,为将对应节点伸展调整至树根,分别需做4、4、3、2和1次旋转。...双层伸展为克服上述伸展调整策略的缺陷,一种简便且有效的方法就是:将逐层伸展改为双层伸展。 具体地,每次都从当前节点v向上追溯两层(而不是仅一层),并根据其父亲p以及祖父g的相对位置,进行相应的旋转。

96430

窗口动画缩放,过渡动画缩放,Animator时长缩放_关闭动画缩放好不好

我们通常会使用它的四个子类AlphaAnimation、RotateAnimation、ScaleAnimation和TranslateAnimation,他们分别可以实现渐变动画、旋转动画、平移动画、缩放动画...功能,当然我们今天的主角就是缩放动画 ScaleAnimation。...X坐标类型 private int mPivotYType = ABSOLUTE; //缩放中心点的Y坐标类型 private float mPivotXValue = 0.0f; //缩放中心点的X坐标比例...:缩放中心点的X坐标比例 pivotYType:缩放中心点的Y坐标类型 pivotYValue:缩放中心点的Y坐标比例 public class Test{ private void test(){...//示例传参实现的是,以控件中心为缩放点,从1.0倍缩小到0.5倍,即原图的二分之一,不设置缩放点类型,默认坐标原点以控件为准 ScaleAnimation animation = new ScaleAnimation

2.4K20

面试官问我:什么是 “伸展树” ?

今天,我们来介绍一种更有意思的自平衡二叉树:伸展树。它的英文名字是Splay Tree。...Part 1 为什么要伸展 我们来回顾一下,二叉搜索树满足:左子结点 < 当前结点 < 右子结点 为什么要有平衡树呢?...可是,经过测试,伸展树与其他平衡树的速度大同小异。 1.13 与其他平衡树比较 红黑树 AVL fhq treap splay(伸展树) 速度最快 最平衡,查找最快 代码最好打 ?...这么看伸展树就一打酱油的,那这个东西到底有什么意义呢? 伸展树的优势在于操作多 欲知后事如何,且听下回分解!...伸展树算法偏难,你若有什么问题,欢迎回复,或者在LOJ的讨论[8]中发出你的观点。 讨论中可能会跟进一些内容(如前趋后继的更好实现、勘误)。

99230

数据结构(7)-- Splay tree(伸展树)

文章目录 前言 伸展树 自底向上旋转 更进一步:展开 情况一:之字型(zig-zag) 情况二:一字型(zig-zig) 示例 伸展树的节点删除 自顶向下伸展树 zig(单旋转) zig-zig...(一字型旋转) zig-zag(之字型旋转) 合并树 我一直没看懂的示例 自顶向下伸展树代码手写 前言 之前也写过两篇关于伸展树的,一篇是概念,一篇是实现。...---- 伸展树 现在我们来介绍一种相对与AVL树更简单的数据结构,它叫伸展树,它保证从空树开始连续任意M次操作最多花费O(MlogN)时间。...伸展树是基于这样的事实:对于二叉查找树来说,每次操作的最坏时间为O(N),并不坏,只要它不时常发生就行。...每次对伸展树进行操作后,它均会通过旋转的方法把被访问节点旋转到树根的位置。

75720

android缩放动画中心缩放_安卓动画缩放调到多少比较好

什么是ScaleAnimation ScaleAnimation即缩放动画,应用场景特别多,比如常见的隐藏菜单点击显示 下面我分两种方式来介绍ScaleAnimation如何使用。...,如:fromXScale= 0.5表示从自身X轴长度0.5倍开始缩放 toXScale:缩放到自身x轴长度多少倍结束,如:toXScale = 2.0表示x轴缩放到自身x轴长度2倍结束 上面两条意思就是...:该view的x轴从自身x轴长度的0.5倍开始缩放到自身x轴长度的2倍结束 fromYScale:从自身y轴长度多少倍开始缩放,如:fromYScale= 0.5表示从自身y轴长度0.5倍开始缩放 toYScale...:缩放到自身y轴长度多少倍结束,如:toYScale = 2.0表示x轴缩放到自身y轴长度2倍结束 pivotX:动画相对于控件X坐标的开始位置 pivotY:动画相对于控件Y坐标的开始位置 如:pivotX...---- 下面看看代码的执行效果: 缩放同时还可以添加透明度变化,如下: 放大+淡入: <?xml version="1.0" encoding="utf-8"?

2.1K20

漫谈特征缩放

Scaling的目的很简单,一方面是使得每列特征“范围”更接近,另一方面是让计算变得更加简单,如梯度下降在特征缩放后,将缩放的更快,效果更好,所以对于线性回归,逻辑回归,NN都需要做特征缩放: 特征缩放有很多种...我们发现,对偏态分布的数据缩放后并没有改变其分布.我们对数据做次log再缩放呢?...,具体是减去中位数再除以第3分位数和第一分位数之间的差值.如下所示: 因为该缩放方法用了分位点的差值,所以它降低了异常值的影响,如果你发现数据有异常值,并且懒得去修正它们,就用这种缩放方法吧.我们对比下异常值对...该缩放方法不会破坏数据的稀疏性,也不会改变数据的分布,仅仅把数据缩放到了-1~1之间.MaxAbsScaler就是让每个数据Xi/|Xmax|,值得注意的是,该方法对异常值也相当敏感....MinMaxScaler: 不适用于有异常值的数据;使得数据缩放到0~1. MaxAbsScaler: 不适用于有异常值的数据;使得数据缩放到-1~1.

93930

OpenCV 图片缩放

OpenCV图片缩放 resize方法 对图像进行缩放的最简单方法就是调用OpenCV中resize函数。resize函数可以将源图像精确地转化为指定尺寸的目标图像。...); src 输入图像. dst 输出图像; 其size为dsize,或由src.size()、fx与fy计算而得; dst类型与src保持一致. dsize 输出图像的size; fx 水平轴缩放因子...(默认设置) INTER_AREA 区域插值法 INTER_CUBIC 双三次插值法 图像金字塔方法 图像金字塔同样也是进行图像缩放的,我们先来看一下什么是图像金字塔: ?...上、下采样都存在一个严重的问题,那就是图像变模糊了,因为缩放的过程中发生了信息丢失的问题。要解决这个问题,就得看拉普拉斯金字塔了。...注意:通过上图resize2与resize4的结果比较,我们可以看出:采用图像金字塔缩放与图片resize方法的结果不太一致。图像金字塔缩放的结果明显要模糊!

3.3K20
领券