📜  门| GATE CS 2019 |第 49 题

📅  最后修改于: 2021-09-27 05:40:11             🧑  作者: Mango

考虑以下语句:

  • 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)是正确的。

这个问题的测验