以下问题已在 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