平衡二叉树与平衡二进制搜索树

时间:2017-03-30 04:17:12

标签: tree binary-tree big-o binary-search-tree

对于这些操作中的每一个,平衡二叉搜索树是否会以比平衡二叉树更快的时间完成任务?

  1. 查找树中的最小项目。
  2. 我认为平衡的BST比平衡的二进制树有更快的时间,因为你可以保持向左移动并找到最小的项目。我认为这将是O(log n)。

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

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

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则不然。

<强>引文

Best, worst and average case [1]

答案 1 :(得分:1)

  

创建树中所有小于某些元素的元素的列表   价值诉。

好吧,在 Big O 表示法中,balanced binary search treebalanced binary tree的表现相同,时间将是 O(N),这是线性时间复杂度。

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

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