BST的时间复杂度

时间:2016-09-30 01:08:37

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

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

2 个答案:

答案 0 :(得分:1)

完整的二叉树是每个级别(除了可能是最后一个级别)完全填充的树。最糟糕的情况是搜索性能是树的高度,在本例中为O(lgM),假设树中有M个词汇。

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

答案 1 :(得分:0)

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

但是,如果二叉搜索树非常不平衡,使其看上去很像一个链表,那么我们将必须遍历每个节点,这要求时间复杂度与M成线性关系。