1.简单
在二叉搜索树中,某节点左子树中的值:
- A大于该节点的值
- B顺序随机
- C小于该节点的值
- D等于该节点的值
2.简单
哪种数据结构最适合实现文本编辑器中的"撤销"(undo)功能?
- A队列
- B图
- C栈
- D哈希集合
3.简单
作为抽象数据类型,集合(set)的定义性特征是什么?
- A它按有序方式存储元素
- B它只允许在一端访问
- C它存储键值对
- D它存储元素且没有重复
4.中等
在一个有 n 个元素的数组中间插入一个元素,代价是多少?
- AO(log n),因为使用二分查找
- BO(n²),因为每个元素要移动 n 次
- CO(n),因为后面的元素必须移动
- DO(1),因为下标已知
5.中等
为什么二叉堆可以不用任何指针而存储在数组中?
- A数组会自动使键保持有序,因此不需要指针
- B堆中的元素从不超过 100 个
- C堆中所有的键都相等
- D它是完全二叉树,因此位置遵循简单的下标公式
6.中等
Dijkstra 算法使用哪种抽象数据类型来选择下一个要处理的顶点?
- A无序集合
- B栈
- CFIFO 队列
- D最小优先队列
7.困难
采用按秩合并(union by rank)和路径压缩(path compression)的并查集(union-find,不相交集合),每次操作的均摊代价为:
- A恰好 O(log n)
- BO(α(n)),即反阿克曼函数,实际上可视为常数
- CO(n)
- DO(n²)
8.困难
把键 5、3、8、1 按此顺序插入一个空的基于数组的二叉最小堆。最终的数组是什么?
- A[1, 3, 5, 8]
- B[1, 3, 8, 5]
- C[3, 1, 8, 5]
- D[1, 5, 8, 3]
答案
- 1. C · 小于该节点的值
- 2. C · 栈
- 3. D · 它存储元素且没有重复
- 4. C · O(n),因为后面的元素必须移动
- 5. D · 它是完全二叉树,因此位置遵循简单的下标公式
- 6. D · 最小优先队列
- 7. B · O(α(n)),即反阿克曼函数,实际上可视为常数
- 8. B · [1, 3, 8, 5]
完整分步解答:请在 examproblems.com 上练习本主题。