📜  数据结构和算法 | 23套

📅  最后修改于: 2021-09-27 14:44:36             🧑  作者: Mango

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

1. 以下哪一项是优先使用 B 树而不是二叉搜索树来索引数据库关系的关键因素?
(a) 数据库关系有大量记录
(b) 数据库关系按主键排序
(c) B-tree 比二叉搜索树需要更少的内存
(d) 磁盘的数据传输是以块为单位的。

答案 (d)
一个磁盘块包含相当多的键。与每个节点只包含一个键的 BST 不同,B-Tree 被设计为包含大量键,因此树高很小。

2. 可以从 4 个不同的键中创建多少个不同的二叉搜索树?
(一) 5
(乙) 14
(c) 24
(四) 42

答案(二)

这是枚举这些 BST 的系统方法。考虑以每个元素为根的所有可能的二叉搜索树。如果有n个节点,那么对于每个选择的根节点,有n-1个非根节点,这些非根节点必须被划分为小于选定根的节点和大于选定根的节点.

假设节点 i 被选为根节点。然后有 i-1 个小于 i 的节点和 n-i 个大于 i 的节点。对于这两组节点中的每一个,都有一定数量的可能子树。

设 t(n) 是具有 n 个节点的 BST 的总数。以 i 为根的 BST 总数为 t(i – 1) t(n – i)。这两项相乘是因为左右子树中的排列是独立的。也就是说,对于左树中的每个排列和右树中的每个排列,您都会得到一个以 i 为根的 BST。

对 i 求和得到具有 n 个节点的二叉搜索树的总数。

 t(n) = \sum_{i=1}^{n} t(i-1) t(n-i)

基本情况是 t(0) = 1 和 t(1) = 1,即有一个空 BST,有一个 BST 有一个节点。

            t(2) = t(0)t(1) + t(1)t(0) = 2
            t(3) =t(0)t(2) +t(1)t(1) + t(2)t(0) = 2+1+2 = 5
            t(4) = t(0)t(3) + t(1)t(2) +t(2)t(1)+ t(3)t(0) = 5+2+2+5 = 14

3. 在一个完整的 k-ary 树中,每个内部节点都恰好有 k 个孩子。这种具有 n 个内部节点的树中的叶子数为:
(a) NK
(b) (n – 1) k+ 1
(c) n( k – 1) + 1
(d) n(k – 1)

答案 (c)

4) 假设 T(n) = 2T(n/2) + n,T(0) = T(1) = 1
以下哪一项是错误的。

a) T(n) = O(n^2)
b) T(n) = Θ(nLogn)
c) T(n) = Ω(n 2 )
d) T(n) = O(nLogn)

答案 (c)
可以使用主定理求解给定的递推关系。它位于主定理的情况 2 中。或者,如果您记得归并排序或最佳情况快速排序的递推关系,您可以猜测 T(n) 的值。

T(n) = Θ(nLogn)

根据大 O 符号的定义,我们可以说。
Θ(nLogn) = O(nLogn) = O(n^2)

Θ(nLogn) 可以等于 Ω(n) 或 Ω(nLogn),但不等于 Ω(n^2)

请参阅 GATE Corner 了解所有往年论文/解决方案/解释、教学大纲、重要日期、笔记等。