对于这些操作中的每一个,平衡二叉搜索树是否会以比平衡二叉树更快的时间完成任务?
我认为平衡的BST比平衡的二进制树有更快的时间,因为你可以保持向左移动并找到最小的项目。我认为这将是O(log n)。
对于2,有人可以向我解释哪一个会有更快的时间吗?
答案 0 :(得分:3)
您还必须考虑时间复杂度表现中的最佳,平均和最差情景,并牢记n
代表的价值:
<强> 1。平衡二进制搜索树表示
25 // Level 1
20 36 // Level 2
10 22 30 40 // Level 3
.. .. .. .. .. .. ..
.. .. .. .. .. .. .. .. // Level n
<强> 2。二进制搜索树表示
10 // Level 1
9 11 // Level 2
7 . . 20 // Level 3
8 . . . 15 24
6 . . . . . . . // Level n
查找树中的最小项目。
这是一项搜索操作。
1)这里的时间复杂度是 O(log n),即使在最坏的情况下也是如此,因为树是平衡的。最小值为10.
2)最坏情况下的时间复杂度为 O(n)。最小值为6.您可以从表示中查看根的左侧树(分支)的行为类似于链接列表。这是因为树是不平衡的。 [1]
创建树中所有小于某个值v。
的元素的列表
这将是一个插入操作。
1)这将是 O(log n),因为当遍历树时它是平衡的,所以你不会得到2)的场景。 / p>
2)这将是 O(n),因为在最糟糕的情况下,您的插入将类似于插入链接列表。
总结: 平衡二进制搜索树在所有搜索,插入和删除节点的情况下都保证 O(log n),而典型的BST则不然。
<强>引文强>
答案 1 :(得分:1)
创建树中所有小于某些元素的元素的列表 价值诉。
好吧,在 Big O 表示法中,balanced binary search tree
和balanced binary tree
的表现相同,时间将是 O(N),这是线性时间复杂度。
对于Balanced Binary Search tree
,我们会执行inorder traversal并继续将所有键添加到列表中,直到我们遇到具有键v
的节点(按顺序遍历BST
导致键的升序排列)。现在,v
是BST
中存在的最大密钥时出现最坏情况,因此,时间复杂度为 O(N)。
对于balanced binary tree
,它与遍历整个树并将所有键添加到列表中的小于v
一样好。因此,时间复杂度也是 O(N)。