繁体   English   中英

平衡二叉树与平衡二叉树

[英]Balanced Binary Tree Vs Balanced Binary Search Tree

对于这些操作中的每一个,平衡的二叉树是否比平衡的二叉树更快地完成任务?

  1. 在树中找到最小的项目。

我认为平衡的BST比平衡的二叉树要快得多,因为您可以一直向左移动并找到最小的项目。 我认为应该是O(log n)。

  1. 创建树中小于某个值v的所有元素的列表。

对于2,有人可以向我解释一下哪一个会有更快的时间吗?

您还必须考虑时间复杂度性能的最佳,平均和最坏情况,并牢记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)的情况。

2)这将是O(n) ,因为在最坏的情况下,您的插入类似于链接列表的插入。

结论:平衡二叉搜索树在所有搜索,插入和删除节点的情况下保证O(log n) ,而典型的BST则不能。


引文

最佳,最差和平均情况[1]

创建树中小于某个值v的所有元素的列表。

好吧,在Big O表示法中, balanced binary search treebalanced binary tree都将执行相同的操作,并且时间为O(N) ,这是线性时间复杂度。

对于Balanced Binary Search tree ,我们将进行有序遍历,并继续将所有键添加到列表中,直到遇到带有键v的节点( BST有序遍历会导致键的升序)。 现在,当vBST存在的最大密钥时,会发生最坏的情况,因此,时间复杂度为O(N)

对于balanced binary tree ,它与遍历整个树并将所有小于v的键添加到列表中一样好。 因此,这里的时间复杂度也是O(N)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM