在什么情况下,使用二叉搜索树搜索术语需要时间复杂度与术语词汇量(比如M)的大小成线性关系?如何确保log M的最差时间复杂度?
答案 0 :(得分:1)
完整的二叉树是每个级别(除了可能是最后一个级别)完全填充的树。最糟糕的情况是搜索性能是树的高度,在本例中为O(lgM)
,假设树中有M
个词汇。
确保此性能的一种方法是使用自平衡树,例如,一棵红黑树。
答案 1 :(得分:0)
由于二进制搜索是一种分治算法,因此如果树是平衡的,则在任何节点的子树下具有相等数量的项时,我们可以确保O(log M)。 O(log M)基本上意味着时间线性增长,而M呈指数增长。如果搜索10个节点的平衡二叉树需要1秒钟,那么搜索100个节点的平衡树就需要2秒钟,搜索1000个节点要花费3秒,依此类推。
但是,如果二叉搜索树非常不平衡,使其看上去很像一个链表,那么我们将必须遍历每个节点,这要求时间复杂度与M成线性关系。