【发布时间】:2018-05-26 20:19:15
【问题描述】:
我正在尝试学习测试,我知道单个插入是 O(logn),树的高度是 n,所以比较会使时间 Ω(n log n)。
我如何证明,给定一个包含 n 个元素的未排序数组 A,在最坏的情况下,构建 BST 所需的时间是 Ω(n log n)。
【问题讨论】:
-
你无法证明它,因为它不是真的。
-
在最坏的情况下,树会长成一个长字符串,看起来像一个链表,每个节点都添加到最后。构建它需要与 n^2 成比例的时间。说列表未排序并不足以避免这种情况。您可以证明平均而言构建一个简单的 BST 需要 O(n log n) 比较。你可以证明像 AVL 或红黑树这样的自平衡树可以通过 O(n log n) 比较来构建。但证明并不是很简单。
-
你能告诉我,如果数组未排序,最坏的情况会怎样?
-
不要互换使用 Omega 和 Big-O,它们是两个不同的东西。
-
@Gene 你为什么这么认为?从任何 BST 构建平衡的 BST 都可以在线性时间内完成,但这与问题无关。此外,如果您有一个排序数组,您可以轻松地从中构建一个 BST。
标签: algorithm performance time binary-tree binary-search-tree