当我学习二进制搜索树(平衡且不平衡)时,我提出了我需要解决的问题:
如果我构造了二进制搜索树(不需要平衡),那么使用n个元素,那么树构建的总时间复杂性是多少?
chere不仅仅是nlog(n)吗? 因为我们需要大量的旋转来进行AVL树的结构。
,但是我需要了解整体树的构建成本以及它如何变化,因为我需要使用平衡的搜索树来进行分类。
我们从构造
n
元素。要将元素插入平衡的树中,您需要log(n)
。因此,您最终得到了
O(n*log(n))
。回到常规的
Bst。它是违反直觉的,但这取决于您如何构造这棵树。如果您不知道BST的所有元素(ONLINE算法),那么您必须彼此插入每个元素。如果您非常不幸,则插入的复杂性是
n
,因此会恶化。
注意这种情况极不可能,但仍然有可能。
但是,如果您提前知道所有元素,您仍然可以实现
O(n)
。您可以对它们进行排序O(n^2)
,然后按以下顺序插入元素。 获取中间元素并将其插入root,然后递归地对剩下的两个部分进行相同的操作。您最终将创建平衡的BST,并使用
O(nlog(n))
.
插入O(nlog(n))
元素。