【问题标题】:Balanced Binary Tree Vs Balanced Binary Search Tree平衡二叉树与平衡二叉搜索树
【发布时间】:2017-03-30 04:17:11
【问题描述】:

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

  1. 查找树中最小的项目。

我认为平衡 BST 比平衡二叉树的 big oh 时间更快,因为您可以继续向左遍历并找到最小的项目。我想应该是 O(log n)。

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

对于 2,有人能给我解释一下哪一个会有更快的大哦时间吗?

【问题讨论】:

  • 如有任何疑问,请随时咨询。

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


【解决方案1】:

您还必须考虑时间复杂度性能的最佳、平均和最差情况,记住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 则不能。


引用

Best, worst and average case [1]

【讨论】:

  • “渐近分析”是关于我朋友的最坏情况。
  • 顺便问一下,如何将创建所有小于 v 的元素的列表分类为插入操作。
  • 这是关于所有案例的,我的朋友并检查您的消息来源,因为您的某些分析是错误的。可能想要编辑它们。
  • 请注明错误
  • 描绘一个 BST 并按 {10,9,8,7,6,5,4,3,2,1} 的顺序插入...这是插入 BST 的最坏情况. O(n),和链表一样。
【解决方案2】:

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

嗯,在 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)

【讨论】:

    猜你喜欢
    • 2013-12-18
    • 1970-01-01
    • 2012-05-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-10
    相关资源
    最近更新 更多