avl-tree

    1热度

    3回答

    堆有什么用途?无论堆可以做什么也可以通过像AVL树一样的自平衡二叉搜索树来完成。堆最常见的用法是找到最小(或最大)元素(时间始终是根)。通过保持指向最小(或最大)元素的指针来构造AVL树时,也可以包含此功能,并且最小/最大查询可以在时间内回答。 我能想到的AVL树的唯一好处是AVL树因为指针而使用更多的内存。在AVL树上使用堆还有其他优势/功能吗?

    0热度

    1回答

    你好,我一直在试图实现一个AVL树,但没有成功。我正在练习来获得这个概念。到目前为止,我已经成功地插入到树中,获取树的高度,检查它是否平衡,树中的节点数,三个中的最小值和最大值以及树中是否有值。现在我试图在树中插入新节点但没有成功的情况下平衡树。请你能指导我做错了什么。以下是我的结果。请耐心等待,谢谢。 下面是我的节点类: BinaryNode.java public class BinaryNo

    0热度

    1回答

    你好,我似乎在重新平衡AVL树时遇到了问题。它平衡除根节点之外的其他所有内容。我不知道它为什么不平衡根节点。当我传递值如50,40,30,20和10.我得到50,30,20,10和40.50不应该是根,正确的根值应该是40. 以下是我的代码: public void insert(T data){ AVLNode<T> newNode = new AVLNode<T>(data);

    2热度

    1回答

    我知道公式是:n(h) = n(h-1) + n(h-2) + 1 我知道它可以减少为: n(h) = n(h-1) + n(h-2) + 1 >= n(h-2) + n(h-2) + 1 >= 2n(h-2) + 1 >= 2n(h-2) 经过这一步后,我不明白会发生在这里的复发。我正在网上阅读证明,他们这样做: >= 2n(h-2) >= 2(2n(h-4)

    0热度

    1回答

    我有一个AVL树实现。 因此,假设我有两个类,一个解析不同类型的Apple的XML,另一个解析不同类型的Orange。 如果我在Apples_Parser.cs类中实例化树,我该如何使用同一棵树来加载桔子的不同类型,这些桔子将从Oranges_Parser.cs类加载到树中? 这不是功课,我刚刚推广的问题,使其更容易(无码提供的是,我在上哪里开始亏损)

    0热度

    1回答

    我被要求计算二叉搜索树和AVL树中节点的平均深度。通过一些研究,我发现树的平均深度是内部路径长度除以树中的节点数,并且给出内部路径长度(树中每个节点的路径长度的总和)通过此复发: D(1) = 0, D(N) = D(i) + D(N − i − 1) + N − 1 其中d(N)是具有N个节点,d(I)的树,是左子树的IPL,和d(镍-1)是右子树的IPL 。 利用这一点,我写了这个功能:

    1热度

    1回答

    我偶然发现了这个问题: 给定一个2^n-1节点的二叉搜索树,给出一个有效的算法将其转换为自平衡树(如avl或RB树)。并分析其作为n的函数的最坏情况运行时间。 那么我认为最有效的算法是在n个节点的o(n)时间,但2^n-1节点是棘手的部分。任何想法什么是运行时间呢? 任何帮助将不胜感激

    -3热度

    1回答

    我正在构建一个AVL树程序。我陷入了一个相当容易的境地,但很难理解什么是错的。我认为这是该程序的错误,而不是我的原因是因为我有相同的类功能之前,它与“左”和“右”交换,它工作得很好... 正如你所看到的,该函数返回temproot指针,该指针等于temp2,如果root==temp。有趣的是,虽然当我测试打印temproot JUST之前,它的价值(在我的例子中是15),返回的实际值是STILL

    3热度

    1回答

    在我看来,像AVL树总比BST更有效。那么为什么人们仍然使用BST? AVL实施中是否会产生费用?

    1热度

    1回答

    我想获得一个二叉搜索树来平衡,我知道它为什么不工作,但我不知道如何解决它。 我直接在插入方法中平衡。 我放了一些斜线来记录平衡应该发生在哪里。 这样的代码不能正常工作,我得到这个异常: Exception in thread "main" java.lang.NullPointerException at Baueme.Treee.insert(Treee.java:54) at Baueme