avl-tree

    1热度

    1回答

    这是一种自底向上的方法来检查树是否是AVL树。因此,如何这段代码的工作原理是: 假设这是一棵树: 8 3 10 2 1 叶节点进行检查,这是叶节点(这里是1)。然后,当具有数据2的节点是当前值时,它展开一次递归。 cl = 1的值,而它比较右边的树。 2的右分支是空的,即没有任何孩子,所以avl_compare将具有允许的(1,0)。 之后,我想为cl添加一个值,以便

    3热度

    2回答

    AVL树与自平衡二叉搜索树相同。 AVL代表什么?这是否与发明人的名字有关?

    2热度

    2回答

    data AVL t = Empty | Node t (AVL t) (AVL t) Int deriving (Eq, Ord, Show) insertNode :: (Ord a) => a -> AVL a -> AVL a insertNode x Empty = Node x Empty Empty 0 insertNode x (Node n left r

    1热度

    1回答

    我已经阅读了许多AVL树的源代码,但没有找到解决此问题的人:当AVL树不平衡时,应首先旋转哪个节点? 假设我有树: 10 /\ 5 25 / 20 ,我尝试添加15,则根及其子25将是不平衡的。 10 /\ 5 25 / 20 / 15 我可以做的25 RR循环(或单个旋转),导致下面的树: 10

    10热度

    2回答

    我正在处理由随机样本难以区分的概率加密元素组成的数据集。这样,相同编号的顺序加密会产生不同的密文。然而,这些仍然可以通过使用SHA256等算法比较两个密文的特殊功能进行比较。 我想用基于树的结构(即:AVL)所描述的密文的方式来加入到MongoDB数据库并建立索引。我不能简单地应用数据库的默认索引,因为如上所述,记录必须使用特殊函数进行比较。 一个例子:假设我有一个数据库分贝和由下面的文档类型组成

    1热度

    1回答

    我需要建议一个算法,采取BST(二进制搜索树),T1有2^(n + 1) - 1键,并建立一个具有相同键的AVL树。该算法应该在最差和平均时间复杂度方面有效(作为n的函数)。 我不知道我该如何解决这个问题。很明显,具有2^(n + 1) - 1密钥的BST的最小尺寸是n(并且如果它是完整/平衡的,情况就是这样),但它对我有什么帮助? 存在被每次加的T1根部到AVL树,然后从T1除去它遍历树,所述直

    2热度

    2回答

    我使用下面的代码来实现AVL树插入,但它不以正确的顺序显示,也没有它的更新高度我也留下了一些功能,因为当插入完成比我能完成这些fucntions AVLNode.cpp #include <iostream> #include <string> #include "AVLNode.h" using namespace std; AVLNode::AVLNo

    0热度

    1回答

    我正在为AVL树写正确的旋转。目前我忽略AVL树的高度部分。我稍后会处理这个问题。但只是在5上应用右旋转会给出错误的值。即使在执行右旋转之后,l->data,ll->data,lll->data仍然会给出旧值(分别为5,3,2)。我用AVL树是: 9(Root) 5(Left Child) 13(Right Child) 3 7

    -1热度

    3回答

    设S是一个整数的动态集合。令n = | S |。将S上的数据结构描述为 支持S上的以下操作,并具有所需的性能保证: •在O(log n)时间内向S插入一个新元素。 •从O(log n)时间的S中删除元素。 •对于满足1≤k≤n的任意k,报告O(k)时间中S的k个最小元素。 您的结构必须始终消耗O(n)空间。 我可以简单地建立一个AVL树,然后按顺序遍历打印前3个元素?

    3热度

    4回答

    我正在为我的学校项目实施avl树,发现自己为对称情况编写两次几乎相同的代码。例如,此功能执行两个节点的旋转来平衡树。如果条款处理中下级节点是更高一个的左子的情况下,和else子句处理相反: void avl<T>::rotate(node<T> *x, node<T> *y) { if (x == y->l) { x->p = y->p; if (y->p