1.简单
树的高度通常定义为:
- A树中叶子的个数
- B根的子节点个数
- C从根到叶子的最长路径上的边数
- D树中节点的总数,包括根和每个叶子
2.简单
删除队首元素的队列操作叫什么?
- AEnqueue
- BPush
- CInsert
- DDequeue
3.简单
在单链表中,每个节点包含:
- A数据和指向所有其他节点的引用
- B只有数据
- C数据和一个索引
- D数据和指向下一个节点的引用
4.中等
在使用开放寻址法的哈希表中,可能的最大负载因子是多少?
- A0.5
- B2
- C1
- D没有最大值
5.中等
深度优先搜索(迭代版本)使用哪种数据结构?
- A仅哈希表
- B栈
- C队列
- D堆
6.中等
在从下标 0 开始存储于数组中的二叉堆里,下标为 i 的节点的父节点在哪里?
- A下标 2i + 1
- B下标 ⌊(i − 1) / 2⌋
- C下标 ⌊i / 2⌋ + 1
- D下标 i − 1
7.困难
如何只用 O(1) 的额外内存检测一个单链表中是否有环?
- A把每个访问过的节点存入一个哈希集合
- B让一个指针每次走一步,另一个每次走两步,检查它们是否相遇
- C对链表排序并寻找重复元素
- D计数节点,直到计数超过链表的长度字段
8.困难
你必须用 O(k) 的内存从 n 个数的数据流中保留最小的 k 个值。哪种方法能在 O(n log k) 时间内完成?
- A一个包含全部 n 个值的有序数组
- B一个保存全部 n 个值的最小堆,最后从中弹出 k 个最小值
- C一个保存最后 k 个值的 FIFO 队列
- D一个大小为 k 的最大堆,当出现更小的值时替换其根
答案
- 1. C · 从根到叶子的最长路径上的边数
- 2. D · Dequeue
- 3. D · 数据和指向下一个节点的引用
- 4. C · 1
- 5. B · 栈
- 6. B · 下标 ⌊(i − 1) / 2⌋
- 7. B · 让一个指针每次走一步,另一个每次走两步,检查它们是否相遇
- 8. D · 一个大小为 k 的最大堆,当出现更小的值时替换其根
完整分步解答:请在 examproblems.com 上练习本主题。