【发布时间】:2020-03-25 20:09:14
【问题描述】:
“对 n 个元素进行排序的每个基于比较的算法在最坏的情况下都必须进行 Ω(nlogn) 次比较。有了这个事实,构造一个 n 节点二叉搜索树的复杂度是多少?为什么?”
基于这个问题,我认为构造复杂度必须至少为 O(nlogn)。也就是说,我似乎无法弄清楚如何找到构造的总复杂性。
【问题讨论】:
-
我认为这个问题更适合cstheory.stackexchange.com
-
当然,这取决于您是否正在努力保持树的平衡(例如,AVL、RedBlack、Splay、随机二叉搜索树)。 O(n log(n)) 是 AVL 和 RedBlack 的最坏情况,随机 BST 的平均情况和 Splay 的摊销情况。如果排序是您的目标,那么堆优先于 BST,它给出 O(n log(n))。
-
@Daniele 如果树是不平衡的(例如,键是按顺序插入的),那么每次插入都是 O(n),结果是 O(n^2)总计。
-
@EduardoPascualAseff 可能是 cs.stackexchange.com 而不是 cstheory.stackexchange.com。
标签: data-structures time-complexity big-o binary-search-tree complexity-theory