📜  数据结构和算法 | 16套

📅  最后修改于: 2021-09-28 10:50:30             🧑  作者: Mango

以下问题已在 GATE CS 2009 考试中提出。

1. 考虑使用数组实现的二进制最大堆。以下哪个数组表示二进制最大堆?

(一) 25、12、16、13、10、8、14
(B) 25、14、13、16、10、8、12
(三) 25、14、16、13、10、8、12
(四) 25、14、12、13、10、8、16

答案 (C)

如果树中每个节点的数据都大于或等于其子节点的数据,则该树是最大堆的。

在堆树的数组表示中,索引 i 处的节点在索引 2i + 1 处有其左孩子,在索引 2i + 2 处有右孩子。

25
        /      \
      /          \
    14            16
   /  \           /  \
 /      \       /     \
13     10      8       12

2. 对上一题的正确答案进行两次删除操作后,数组的内容是什么?

(一) 14、13、12、10、8
(二) 14、12、13、8、10
(三) 14、13、8、12、10
(四) 14、13、12、8、10

答案(D)

对于堆树,删除节点包括以下两个操作。

1) 用最后一层的最后一个元素替换根。
2)从根开始,从上到下堆成完整的树..

让我们一一删除这两个节点:
1) 删除 25:
用 12 替换 25

12
        /    \
      /       \
    14        16
   / \         /
 /     \      /
13     10    8

由于根违反了堆属性(16 大于 12),因此将 16 作为树的根。

16
        /     \
      /        \
    14         12
   / \         /
  /   \       /
13     10    8

2) 删除 16:
用 8 替换 16

8
        /    \
       /      \
    14         12
   / \
  /   \
 13     10

从根部到底部堆肥。

14
         /    \
       /       \
     8         12
    / \
   /   \
 13     10
14
         /     \
        /       \
     13         12
    / \
   /   \
  8    10

3. 在快速排序中,对于 n 个元素的排序,使用 O(n) 时间算法选择第 (n/4) 个最小元素作为主元。快速排序的最坏情况时间复杂度是多少?

(A) Θ(n)
(B) Θ(n Log n)
(C) Θ(n^2)
(D) Θ(n 2 log n)

答案(B)
递归表达式变为:

T(n) = T(n/4) + T(3n/4) + cn

解决上述递归后,我们得到 Θ(nLogn)。


4. 任何有 7 个节点的 AVL 树的最大高度是多少?假设具有单个节点的树的高度为 0。

(A2
(乙) 3
(三) 4
(四) 5

答案(B)
AVL 树是具有以下限制的二叉树。
1)孩子的身高差最多为1。
2)两个孩子都是AVL树

a
               /   \
             /      \
            b        c
          /  \      /
         /    \    /
        d     e   g
       /
      /
     h

参考:
http://en.wikipedia.org/wiki/AVL_tree