【问题标题】:Time complexity in BSTBST 中的时间复杂度
【发布时间】:2016-09-30 01:08:36
【问题描述】:

在什么情况下,使用二叉搜索树搜索术语需要与术语词汇量(例如 M)成线性关系的时间复杂度?如何保证 log M 的最坏时间复杂度?

【问题讨论】:

  • 您可以拥有像 AVL 树这样的自平衡树,否则在最坏的情况下,二叉树将倾斜(左或右),并且它的最坏情况时间复杂度等于树……

标签: data-structures time-complexity binary-search-tree


【解决方案1】:

完全二叉树是指除了最后一层之外的每一层都被完全填满的树。最坏情况下的搜索性能是树的高度,在这种情况下为 O(lgM),假设树中有 M 词汇。

确保这种性能的一种方法是使用自平衡树,例如一棵红黑树。

【讨论】:

    【解决方案2】:

    由于二分查找是一种分治算法,如果树是平衡的,我们可以确保 O(log M),任何节点的子树下的项数相等。 O(log M) 基本上意味着时间线性增长,而 M 呈指数增长。如果搜索一个有 10 个节点的平衡二叉树需要 1 秒,那么搜索一个 100 个节点的平衡二叉树需要 2 秒,搜索 1000 个节点需要 3 秒,以此类推。

    但是如果二叉搜索树极度不平衡到看起来很像链表的地步,我们将不得不遍历每个节点,需要与 M 成线性关系的时间复杂度。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-03-26
      • 2023-03-28
      • 1970-01-01
      相关资源
      最近更新 更多