【发布时间】:2020-04-17 21:09:36
【问题描述】:
构建平衡二叉搜索树的计算复杂度(时间和空间复杂度)是多少?
【问题讨论】:
-
你怎么看?为什么?
标签: time-complexity binary-tree binary-search-tree binary-search space-complexity
构建平衡二叉搜索树的计算复杂度(时间和空间复杂度)是多少?
【问题讨论】:
标签: time-complexity binary-tree binary-search-tree binary-search space-complexity
将一个节点插入平衡二叉搜索树需要O(log n)时间,因此可以在O(n log n)时间内插入n个节点来构建一棵树。
还有待证明,没有更好的方法来构建树 - 例如,将元素插入堆也需要 O(log n) 时间,但有 a cleverer algorithm 构建了一个在 O(n) 时间内大小为 n 的堆。但是,Ω(n log n) 是任何比较排序算法的下限,因此不可能有一种渐近更快的方法来构建 BST,因为您可以通过构建 BST 然后 traversing it in order 来进行比较排序。
【讨论】:
用n 节点构建BST 的时间复杂度是O(n*log(n))。
为什么?您需要遍历每个 n 节点才能将其插入树中。现在插入一个节点需要log(n) 比较。
因此,在二叉搜索树中插入 n 节点的总时间复杂度为 O(n*log(n))
【讨论】: