从头开始构建大小为n的平衡二叉树的复杂性是多少?
节点插入是O(log n)。
但是,随着时间的推移,累计时间为
O((log 1)+(log 2)+ ... +(log(n-1))+(log n))。
这是什么“加起来”?
是o(n log(n)),小'o',我不知道有多远。
答案 0 :(得分:2)
log(1) + log(2) + ... + log(n) = log(1*2*..*n) = log(n!)
中的 Theta(nlogn)
因此,从头开始构建一个(平衡的)树具有Theta(nlogn)
的紧密渐近界限
修改强>
我还想向您展示一个证据,证明您无法使用任何算法构建比O(nlogn)
更好的BST。基本上 - 这是因为通过简单地使用“更好”算法构建树,然后 - 在树上进行有序遍历并输出元素,它将允许比O(nlogn)
更好地排序。结果将是一个排序数组。
复杂度有序遍历是O(n)
,并且由于假设树的构建速度比O(nlogn)
快 - 我们与排序Omega(nlogn)
有问题的事实相矛盾。