考虑以下语句:
- I.最大堆中最小的元素总是在叶节点上。
- 二、最大堆中的第二大元素始终是根节点的子节点。
- 三、可以在 Θ(n) 时间内从二叉搜索树构建最大堆。
- 四、可以在 Θ(n) 时间内从最大堆构建二叉搜索树。
以上哪些陈述是/是正确的?
(A) II、III 和 IV
(B) I、II 和 III
(C) I、III 和 IV
(D) I、II 和 IV答案:(乙)
解释:陈述(I)是正确的。在最大堆中,最小元素总是出现在叶节点上。所以我们需要检查所有叶子节点的最小值。最坏情况复杂度为 O(n)
12
/ \
/ \
8 7
/ \ / \
/ \ / \
2 3 4 5
语句(II)也是正确的,否则将不满足max-heap属性。
语句 (III) 也是正确的,因为构建堆总是需要 Θ(n) 时间,(参考:Convert BST to Max Heap)。
语句 (IV) 是错误的,因为从最大堆构建二叉搜索树将花费 O(nlogn) 时间。
所以,选项(B)是正确的。
这个问题的测验