我对在二进制搜索树中前进和后退的最坏情况效率感兴趣。
不平衡树:
5
/
1
\
2
\
3
\
4
看起来最坏的情况是4-
平衡树:
2
/ \
1 4
/ \
3 5
最坏情况是2-
我认为BST的最坏情况是O(高度-1),对于平衡树是O(log n),对于不平衡树是O(n-1),这是对的吗?
如果您正在考虑按顺序遍历树,那么复杂性不会因平衡而改变。算法仍然是
walk( Node n)
walk( n.left )
visit( n )
walk( n.right )
每个步骤1个操作。
当你开始应用查找、插入和删除时,平衡就开始发挥作用了。
为了使这些操作处于O(log N)中,需要一个平衡树。
如果要在树定义的序列中查找下一个元素,可能需要遍历树的整个高度,当然,在平衡树中这是O(log N),在不平衡树中这是O(N)
我认为BST的最坏情况是O(高度-1),对于平衡树是O(log n),对于不平衡树是O(n-1),这是对的吗?
是的,当从k
到k 1
旅行时,您只需要向上或向下移动,而不需要两者兼而有之(因为不变量是左孩子
虽然O(高度-1)可以写成O(高度)(并且类似地写成O(n))。
假设T是具有n个节点和高度h的二叉查找树。T的每个节点x存储一个实数x。键。给出以下算法Func1(T. root)的最坏情况时间复杂度。你需要证明你的答案。 x.left() 对于最坏情况下的运行时,我认为这将是O(树的高度),因为这基本上类似于最小()或最大()二元搜索树算法。然而,它是递归的,所以我对是否将O(h)作为最坏的运行时编写有点犹豫。 当我考虑它时,最坏的情况是如果函数执行if(s
问题内容: 有没有类似于.Net 和Java的属性。 问题答案: 使用List接口的方法获取对象。从那里,你可以使用,,,和方法来浏览列表。这是一个使用的非常简单的示例。 示例代码应打印“ A”。
我非常努力地显示下一个&上一个按钮,不管它是否在我的wordpress主题上处于活动状态。我似乎想不出一个办法来让它工作。我正在尝试这样做:http://www.kinocreative.co.uk/hints-and-tips/wordpress-nextpreview-post-navigation-with-images-and-inactive-links/extracty but for
如何计算以下函数的时间复杂度? 现在,我知道循环具有O(n)时间复杂度,但在这种情况下,I以更快的速度增长。一次又一次地迭代,我发现,对于每一个第m次迭代,I=m^2。但我仍然不知道如何计算大O。
我从一个RPC服务接收到一个通用的类型实例,我要将该实例转换为类型实例,此操作的时间复杂度是多少?性能对我的应用程序至关重要。(对于像Java和C#这样的语言) 示例:或
我写了一个函数来寻找目标值在给定数组中应该插入的位置。我们假设数组有不同的值,并按升序排序。我的解必须是O(log N)时间复杂度 此代码的复杂性是否为O(log N)?