avl-tree相关内容
在给定一定数量的节点的情况下,是否存在一个公式来计算AVL树的最大和最小高度? 例如: 教科书问题: 3个节点,5个节点和7个节点的AVL树的最大/最小高度是多少? 教科书答案: 3个节点的AVL树的最大/最小高度为2/2,5个节点的最大/最小高度为3/3,7个节点的最大/最小高度为4/3 我不知道他们是否通过某种魔术公式将其找出来,或者是否为每个给定的高度绘制了AVL树并以此
..
我正在处理一项要求我实施AVL树的任务.我很确定我有正确的旋转方法,但是在弄清楚何时使用它们时遇到了麻烦. 例如,书中的解释说,我应该沿着向下插入节点/元素的路径向上爬.但是,我没有任何父指针. 最新代码: public BinaryNode insert(BinaryNode node) { if (this.getElement().compareTo(n
..
众所周知,从AVL树中删除可能会导致多个节点最终失衡。我的问题是,需要进行2轮旋转的最小尺寸的AVL树是多少(我假设左右或左右旋转为1轮)?我目前有一个带有12个节点的AVL树,删除将导致2个旋转。我的AVL树按以下顺序插入: 8、5、9、3、6、11、2、4、7、10、12、1。 如果删除10,则9将变得不平衡并发生旋转。这样做,8变得不平衡,并发生另一个旋转。 在删除jpal
..
我很努力地想出Data.AVL树的成员资格证明的概念.我希望能够传递n ∈ m类型的值,以表示n在AVL树中显示为键,因此,给出这样的证明,get n m总是可以成功产生与n相关的值.您可以假设我的AVL树始终包含从集合半格(A,≈)上的连接半格(A,∨,⊥)绘制的值,尽管下面的幂等性是隐式的. module Temp where open import Algebra.FunctionP
..
我想实现Java AVL树并左右旋转树。我没有得到这个。 任何人都可以通过查看下面的代码告诉我怎么可能左右旋转树然后使用这两个函数修复平衡AVL树? 我希望有人可以指导我完成此事。 import java.util.Random; import java.util.SortedSet; import java.util.TreeSet; 公共类AVLTree
..
说我有一个无序的集合{3,6,5,1,2,4},我需要构建一个AVL树, 这很好...我理解基本轮到我这里: 5 / \ 2 6 / \ 1 3 但是当我尝试插入4 ,我得到我的最终答案(左边的) 4但实际的答案是:3 / \ / \ 2 5 2 5 / \ \ / / \ 1 3 6 1 4 6 当我打
..
我正在做一个需要使用AVL树的项目, 我为avl写的insert函数似乎不起作用,最多可以在3或4个节点上运行; 我真的很感激你的帮助 尝试在 树插入(Tree t,char name [80],int num) { if(t == NULL) { t =(Tree)malloc(sizeof ); if(t!= NULL) { strcpy(t-> name,n
..
Java中TreeSet方法的计算复杂度是否与AVLTree的计算复杂度相同? 具体来说,我想知道以下方法的计算复杂性: 1.add 2.remove 3.first 4.last 5. floor 6.更高 Java文档的方法描述: http://docs.oracle.com/javase/6/docs/api/java/util /TreeSet.html 对于
..
我使用kd-tree算法和树。 但是我发现树不平衡,所以我的问题是如果我们使用kd-tree算法,那么树总是平衡的,那么如何才能平衡? 。 我们可以使用另一种像AVL或Red-Black的算法来平衡kd树? 我有一些样本数据,我使用kd-tree算法,但是树不平衡。 解决方案 这是一个相当广泛的话题,问题本身就是一般的。 希望这将为您提供一些有用的见解和材料: K
..
我想在Java中实现一个AVL树,这里是我到目前为止: public class AVLNode { private int size; / **树的大小。 * / private int height; / **树的高度。 * / private Object key; / **当前节点的密钥。 * / 私有对象数据; / **当前节点的数据。 * /
..
有没有这样的数字序列(1-7,所有使用的数字,只有一次),将形成相等的AVL和播放树? 解决方案 为了科学的利益,我根据各自的维基百科文章在Python中实现了AVL和splay树。假设我没有在某个地方出错,我的发现是,没有产生相同的AVL和播放树的{1,...,7}的排列。对于所有大小k> 3的集合,我猜想也是如此。至于其根本原因,我不知道。 如果有人想要我代码,这里是:
..
作为程序员,我应该考虑使用RB树,B-树或AVL树? 在决定选择之前,需要考虑的要点是什么? 有人可以为每个树结构解释为什么选择其他树的关键点? 解决方案 使用一小段盐: 当您管理数以千计的项目时,B-tree并且您正在从磁盘或某些缓慢的存储介质中分页。 当您在树上进行相当频繁的插入,删除和检索时,RB树。 p> 当您的插入和删除不相对于您的检索时,AVL树。
..
据了解, AVL 树和
..
我最好的猜测是,当您从已经平衡的AVL树中插入或删除一个元素时,一次旋转始终足以平衡AVL树。 是一次旋转总是够吗 一个例子将帮助需要多次旋转。 PS:我只计算RL / LR轮换为一轮。 解决方案 最多只能插入1个旋转。 要删除旋转数由O(log(n))限定。 Log(n)是树的高度。 关于AVL删除的更多解释。 从AVL中删除节点时,可能会导致树不平衡,您必须
..
我正在寻找在 AVL-tree 中计算节点余额的最佳方法。我以为我已经工作了,但经过一些沉重的插入/更新,我可以看到它不正确(总是)。 这是一个两部分的问题,第一部分将是如何计算子树的高度,我知道定义“节点的高度是从该节点到叶片的最长下行路径的长度。“我明白了,但是我未能实现它。为了进一步混淆我这个引用可以在树高度上的维基百科上找到“通常,值-1对应于没有节点的子树,而零对应于一个具有一个节
..
我想向左旋转子树根节点 N (见左图),而不操作其父 P 。 PPP \ | \ N | RR / \ | / / LRNN / / LL b $ b 如果我在函数中使用 N 作为参数: void rotate_left(Node * node); 我最终会在中间的一个树上出现一个树。问题是,尽管旋转 P 仍然指向 N ,而
..
我知道如何寻找一个节点与特定的钥匙插入AVL树。但我想知道如何在AVL树-2,平衡因子搜索 下面是code,我都试过了。 无效searchForUnrequiredBalanceFactor(avlnode * N,avlnode * R) { avlnode * PTR; PTR = N; 如果(PTR == NULL) 返回; 其他
..
我想要计算AVL树中的节点的平衡因子,而无需使用任何递归过程。我怎样才能做到这一点?请告诉我方法或提供C ++ code段。 解决方案 您可以将平衡因子保存为每个节点保存的信息的一部分。 具体而言,可以节省左,右子树的高度,并更新值与每一个插入/缺失插入/缺失的道路上。 例如: 类节点{ 上市: // 东东... INT GetBF(){返回lHeight - rH
..
我在实施这一方法在java中的一个问题。我专门实施计算几何第三版算法 FINDINTERSECTIONS 使用AVL BST树的状态。从书中的描述如下: 我有正在执行第5步中 HANDLEEVENTPOINT 的问题。当事件点是交叉点,则状态为不再全序那里,因为对于交线,它们跨越在其交叉点,需要在状态被交换。由于我使用的BST是AVLTree,删除方法失败,因为再平衡的方法需要的元素的正确顺
..
B +树像AVL树自平衡树。 这里我们可以看到左,右旋转用于保持AVL树平衡。 和这里是说明在插入一个链接B +树。这种插入技术不涉及任何旋转,如果我没有错,以保持树的平衡。因此它看起来简单。 问:是否有任何类似的(或不使用旋转任何其他技术),以保持AVL树平衡? 解决方案 答案是...是的,没有。 B树不需要进行旋转,因为它们具有与它们可以多少不同的密钥包成节点中的某些松弛。当您添加越
..