2-1下列叙述正确的是(D)。
A.
虽然给出关键字序列的顺序不一样,但依次生成的二叉搜索树却是一样的。
ERROR:关键字序列的顺序不一样,就代表根节点的关键字不一样
B.
在二叉搜索树中插入一个新结点,总是插入到最下层,作为新的叶子结点。
EREOR:
C.
在任意一棵非空二叉搜索树,删除某结点后又将其插入,则所得二叉搜索树与删除前原二叉搜索树相同。
ERROR:删除前和删除后的根节点不一样,所以最后得到的二叉树也不一样
D.
二叉树中除叶结点外, 任一结点X,其左子树根结点的值小于该结点(X)的值;其右子树根结点的值≥该结点(X)的值,则此二叉树一定是二叉搜索树。
2-2
若一棵二叉树的后序遍历序列是{ 1, 3, 2, 6, 5, 7, 4 },中序遍历序列是{ 1, 2, 3, 4, 5, 6, 7 },则下列哪句是错的?(B)
A.
这是一棵完全二叉树
B.
7是5的父结点
C.
这是一棵二叉搜索树
D.
2是1和3的父结点
2-3
若一棵二叉树的前序遍历序列是{ 4, 2, 1, 3, 6, 5, 7 },中序遍历序列是{ 1, 2, 3, 4, 5, 6, 7 },则下列哪句是错的?(C)
A.
这是一棵二叉搜索树
B.
所有的奇数都在叶子结点上
C.
2是5的父结点
D.
这是一棵完全二叉树
ERROR:和楼上一样
2-4
用二分查找从100个有序整数中查找某数,最坏情况下需要比较的次数是:(A)
A.
7
B.
50
C.
99
D.
10
ERROR:Log2(100)~7;
2-5
已知一个长度为16的顺序表L,其元素按关键字有序排列。若采用二分查找法查找一个L中不存在的元素,则关键字的比较次数最多是:(D)
A.
7
B.
5
C.
6
D.
4
ERROR:如果找不到在第四次比较结束后tail就会>head,循环结束
2-6
在有n(n>1000)个元素的升序数组A中查找关键字x。查找算法的伪代码如下所示:
k = 0;
while ( k<n 且 A[k]<x ) k = k+3;
if ( k<n 且 A[k]==x ) 查找成功;
else if ( k-1<n 且 A[k-1]==x ) 查找成功;
else if ( k-2<n 且 A[k-2]==x ) 查找成功;
else 查找失败;
本算法与二分查找(折半查找)算法相比,有可能具有更少比较次数的情形是:A
(2分)
A.
当x位于数组中间位置
B.
当x接近数组结尾处
C.
当x接近数组开头处
D.
当x不在数组中
ERROR:直接看代码就知道是三个三个的找的,所以直接就是C
2-7
对二叉搜索树进行什么遍历可以得到从小到大的排序序列?(A)
A.
后序遍历
B.
中序遍历
C.
前序遍历
D.
层次遍历
2-8
若二叉搜索树是有N个结点的完全二叉树,则不正确的说法是:(B)
A.
平均查找效率是O(logN)
B.
中位值结点在根结点或根的左子树上
C.
最小值一定在叶结点上
D.
最大值一定在最后一层
ERROR:其实也可以在右子树上
2-9
若二叉搜索树是有N个结点的完全二叉树,则不正确的说法是:(D)
A.
最大值一定在叶结点上
B.
所有结点的平均查找效率是O(logN)
C.
最小值一定在叶结点上
D.
中位值结点在根结点或根的左子树上
***2-10
将{ 5, 11, 13, 1, 3, 6 }依次插入初始为空的二叉搜索树。则该树的后序遍历结果是:***(C)
A. 1, 3, 11, 6, 13, 5
B. 1, 3, 5, 6, 13, 11
C. 3, 1, 6, 13, 11, 5
D. 3, 1, 5, 6, 13, 11
2-11
下列二叉树中,可能成为折半查找判定树(不含外部结点)的是:
ERROR:这里可以引用一位大佬的文章折半查找判定树
2-12
已知8个数据元素为(34,76,45,18,26,54,92,65),按照依次插入结点的方法生成一棵二叉搜索树后,最后两层上的结点总数为(B)
A.
4
B.
2
C.
3
D.
1