目录
[1. 排序](#1. 排序)
[1.1 冒泡排序的改进](#1.1 冒泡排序的改进)
[2. 二叉树](#2. 二叉树)
[2.1 二叉树的性质](#2.1 二叉树的性质)
[3. 栈 & 队列](#3. 栈 & 队列)
[3.1 循环队列](#3.1 循环队列)
[3.2 链式队列](#3.2 链式队列)
[4. 平衡二叉搜索树------AVL树、红黑树](#4. 平衡二叉搜索树——AVL树、红黑树)
[5 优先级队列(堆)](#5 优先级队列(堆))
1. 排序
1.1 冒泡排序的改进
下面的排序方法中,关键字比较次数与记录的初始排列无关的是______。
A. 希尔排序
B. 冒泡排序
C. 直接插入排序
D. 直接选择排序
答案:D
基础的冒泡排序是与初始排列无关的,但是改进的冒泡排序,当一趟排序之后没有交换,则说明序列已经有序,则可退出排序,例如一个已经排好序的序列,第一次循环之后就可以退出排序了;
所以说对比B选项和D选项,D选项肯定时最优解
2. 二叉树
2.1 二叉树的性质
① 对于任意一颗二叉树,设叶子节点个数为n0,度为二的节点的个数为n2,则满足n0 = n2 + 1
某二叉树共有 399 个结点,其中有 199 个度为 2 的结点,则该二叉树中的叶子结点数为() A. 不存在这样的二叉树
B. 200
C. 198(错误)
D. 199
答案:B
②深度和高度
根节点的深度为0
3. 队列
3.1 循环队列
现有一循环队列,其队头指针为front,队尾指针为rear;循环队列长度为N。其队内有效长度为()("左闭右开")
A. (rear - front + N) % N + 1(错误)
B. (rear - front + N) % N
C. (rear - front) % (N + 1)
D. (rear - front + N) % (N - 1)
答案:B
3.2 链式队列
用不带头结点的单链表存储队列,其队头指针指向队头结点,队尾指针指向队尾结点,则在进行出队操作时()
A. 仅修改队头指针(错误)
B. 仅修改队尾指针
C. 队头、队尾指针都可能要修改
D. 队头、队尾指针都要修改
答案:C
※当队列只有一个节点时,出队列对头队尾指针均需要修改、
4. 栈
4.1 运算表达式
表达式3*2^(4+2*2-6*3)-5求值过程中当扫描到6时,对象栈和运算符栈为(),其中^为乘幂
A. 3,2,4,1,1;(*^(+*-
B. 3,2,8;(*^-(错误)
C. 3,2,4,2,2;(*^(-
D. 3,2,8;*^(-
答案:D
数据栈:有数据就直接入栈
运算符栈 :设遍历到当前的运算符位x ,如果栈不为空,比较栈顶与当前运算符优先级x,当栈顶运算符优先级大于或者等于x的优先级,则出栈,并将两个数据栈的数据出栈,计算出对应的数据,加入到数据栈中
5. 平衡二叉搜索树------AVL树、红黑树
若将关键字1,2,3,4,5,6,7 依次插入到初始为空的平衡二叉树 T 中,则 T 中平衡因子为 0 的分支结点的个数是( )
A. 0
B. 1
C. 2
D.3
答案:D (分支节点:不包含叶子节点)
6. 优先级队列(堆)
下述二叉树中,哪一种满足性质:从任一结点出发到根的路径上所经过的结点序列按其关键字有序()
A. 二叉排序树(错误)
B. 哈夫曼树
C. AVL树
D. 堆
答案:D
7. 哈希表
采用哈希表组织100万条记录,以支持字段A快速查找,则()
A. 理论上可以在常数时间内找到特定记录(错误:发生哈希冲突)
B. 所有记录必须存在内存中
C. 拉链式哈希曼最坏查找时间复杂度是O(n)
D. 哈希函数的选择跟A无关
答案:C