- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
考虑一下我的树是这样的
5
/ \
3 7
/ \ / \
2 4 6 8
在那里,当我们搜索一个元素2
时,将执行zigzig操作,所以首先我们旋转 parent and ancestor of 2
,然后我们旋转 parent and 2
。
在同样的情况下,考虑我们正在搜索 4
,此时将执行 zigzag 操作。首先我们旋转 4 和它的父节点
,然后旋转 4 和它的祖先
。
为什么我们这样做,在之字形中,为什么我们不旋转父级和祖先
而不是搜索节点和父级
。
请解释一下??提前致谢。
最佳答案
旋转的顺序很重要。这就是分析每次操作产生 O(lg n)
时间的原因,该时间分摊到一系列 m 操作中。 splay(x)
启发式将节点 x 移动到树的根,但不是仅仅旋转 x 直到它成为根,之字形步骤首先旋转 x 的父节点然后旋转 x。例如,如果我们只是旋转 x 直到它成为根,那么分析将不会产生有用的结果。
您在这里描述的是不同的东西。您希望始终先旋转父项,然后再旋转子项。如果您认为这种启发式算法是好的,您需要正式证明它是好的,但要回答这个问题:splay 树中的旋转顺序保证 O(m lg n)
绑定(bind)在一系列 m 操作上。
关于c - splay tree 中的 ZigZag 和 ZigZag 操作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27742214/
考虑一下我的树是这样的 5 / \ 3 7 / \ / \
我有一组不同的二维向量(实数),指向不同的方向。我们可以选择一对向量并构造它们的线性组合,使得系数为正且它们的和为 1。简而言之,我们可以对任意两个向量进行“加权平均”。 我的目标是针对任意方向选择一
我在 svg 中工作,想使用给定的点集创建一个图案。我的之字形图案是“等边三 Angular 形”。我在 svg 中使用“路径”来创建它。问题是我无法在两点之间找到精确的“中点”来创建“等边三 Ang
我的训练数据由大约 700 个独特样本组成(这是针对回归问题)。数据未打乱,因此前 N 个样本具有相同的标签(例如,值 1.25),然后接下来的 M 个样本具有相同的标签(例如,2.99) >) 等。
我目前正在设计一个网站,我在页脚顶部创建了一个“之字形”边框。为了在网站中创建一些深度,我想在“之字形”中的三 Angular 形上添加阴影,这就是我目前遇到的问题。 这是我现在拥有的页脚示例:h
这个问题在这里已经有了答案: How can I move this zigzag border to the left side instead of the bottom? (2 个答案) 关
我在 MATLAB 中有一个 NxM 矩阵,我想以与 JPEG 重新排序其子 block 像素的方式类似的方式重新排序: (image from Wikipedia) 我希望算法具有通用性,这样我就可
我有一个问题。我必须将锯齿形格式的二叉树转换为双向链表。 Given BT: [1] [2] [3] [
我在 MATLAB 中有一个 NxM 矩阵,我想以与 JPEG 重新排序其子 block 像素的方式类似的方式重新排序: (image from Wikipedia) 我希望算法具有通用性,这样我就可
我必须使用层序遍历打印二叉树的节点,但要以螺旋形式打印,即不同层级的节点应以螺旋形式打印。 例如:如果树看起来像: 输出应该是 10 5 20 25 15 6 4。 我使用的算法很简单,只是层序遍历的
假设我有一个数组 A[][] = {{ 1, 2, 3, 4}, { 5, 6, 7, 8}, { 9,10,11,12}}; 然后我想打印一个wave,这样输出就
字形变换,ZigZag,题解,Leetcode, 力扣,Python, C++, Java 题目地址:https://leetcode.com/problems/zigzag-conversion/
我目前正在使用 quantmod ZigZag 叠加层,我注意到它的计算方式与原始叠加层略有不同。 我已经证明了以下 picture 的区别RDWR 使用 ZigZag(5%) 和 quantmod和
我正在尝试使用字符在 Java 中制作 ZigZag 线,但代码无法正常工作 public void ZigZag(int width, int height, boolean infinite, c
我正在尝试对二叉树进行之字形遍历。但是我被困在一种类型的测试用例中,即当树不平衡时。如果我将我的输入作为 3 3 9 20 null null 15 7 对于看起来像这样的二叉树: 3
我正在尝试在 css 中使用线性渐变创建锯齿形边框。我有“顶部”边框工作,但我似乎无法让底部边框工作。底部的位于纯色部分和带有背景图像的部分之间。如果它是一个纯色部分,我可以让底部的部分工作,但图像背
语言:Java 我遇到了应该产生以下模式的递归方法的问题: Zigzag 1 * Zigzag 2 * ** * Zigzag 3 * *** * Zigzag 4 * ** * ****
我在剧本上费了很大劲,但我不能让它奏效。下面是Pine脚本的默认Z字形代码,我只想要补偿(移到未来)。它使用线路。新的功能,但我无法使之字形移动在未来,如果有人可以引导我。我已经添加了偏移量变量,我想
我正在寻找一些库,它可以提供一些函数,可以帮助将 zig-zag 编码的字节数组解码为 2 的补码 long/int 并返回。 由于 ZigZag 用于 protobuf我预计 Guava 有它的用处
我有这行代码来创建一个锯齿形数组,它相当简单,而且我已经有了它的代码。这是问题的摘要: 该方法创建并返回一个新的二维整型数组,在 Java 中它实际上只是一个一维数组,其元素是 int[] 类型的一维
我是一名优秀的程序员,十分优秀!