一. 单选题(共12题,49.2分)
1. (单选题)
二维数组A[10..20,5..10]采用行序为主序方式存储,每个元素占用4个存储单元,且A[10,5]的存储地址是1000,则A[18,9]的存储地址是( )。
A. 1208 B. 1212 C. 1368 D.1364
- A. 1208
- B. 1212
- C. 1368
- D. 1364
我的答案: A:1208;正确答案: A:1208;
4.1分
2. (单选题)
3.若对n阶对称矩阵A[1..n,1..n]以行序为主序方式将其下三角形的元素(包括主对角线上所有元素)依次存放于一维数组
中,则在B中确定aij (i<j)的位置k的关系为( )。
- A.
- B.
- C.
- D.
我的答案: B:;正确答案: B:;
4.1分
3. (单选题)
下列有关二叉树的说法正确的是( )。
- A. 二叉树的度为2
- B. 一棵二叉树度可以小于2
- C. 二叉树中至少有一个结点的度为2
- D. 二叉树中任一个结点的度都为2
我的答案: B:一棵二叉树度可以小于2;正确答案: B:一棵二叉树度可以小于2;
4.1分
4. (单选题)假定在一棵二叉树中,双分支结点数为15,单分支结点数为30个,则叶子结点数为( )
- A. 15
- B. 16
- C. 17
- D. 47
我的答案: A:15;正确答案: B:16;
0分
5. (单选题)设a、b为一棵二叉树上的两个结点。在中序遍历时,a在b前面的条件是( )。
- A. a在b的右方
- B. a在b的左方
- C. a是b的祖先
- D.
a是b的子孙
我的答案: B:a在b的左方;正确答案: B:a在b的左方;
4.1分
6. (单选题)以下说法正确的是( )
- A.
若一个树叶是某二叉树前序遍历序列中的最后一个结点,则它必是该子树后序遍历序列中的最后一个结点。
- B.
若一个树叶是某二叉树前序遍历序列中的最后一个结点,则它必是该子树中序遍历序列中的最后一个结点。
- C. 在二叉树中,具有两个子女的父结点,在中序遍历序列中,它的后继结点最多只能有一个子女结点。
- D.
在二叉树中,具有一个子女的父结点,在中序遍历序列中,它没有后继子女结点。
我的答案: C:在二叉树中,具有两个子女的父结点,在中序遍历序列中,它的后继结点最多只能有一个子女结点。;正确答案: C:在二叉树中,具有两个子女的父结点,在中序遍历序列中,它的后继结点最多只能有一个子女结点。;
4.1分
7. (单选题)
树的基本遍历策略可分为先根遍历和后根遍历,二叉树的基本遍历策略可分为先序遍历、中序遍历和后序遍历。这里,我们把由树转化得到的二叉树叫做这棵树对应的二叉树。结论( )是正确的。
- A. 树的先根遍历序列与其对应的二叉树先序遍历序列相同。
- B. 树的后序遍历序列与其对应的二叉树后序遍历序列相同。
- C. 树的先根遍历序列与其对应的二叉树中序遍历序列相同。
- D.
以上都不对
我的答案: A:树的先根遍历序列与其对应的二叉树先序遍历序列相同。;正确答案: A:树的先根遍历序列与其对应的二叉树先序遍历序列相同。;
4.1分
8. (单选题)
深度为k的二叉树,结点个数最多为( )
我的答案: B:;正确答案: B:;
4.1分
9. (单选题)
具有10个叶子结点的哈夫曼树中,总共结点个数为( )
- A. 19
- B. 20
- C. 18
- D. 10
我的答案: A:19;正确答案: A:19;
4.1分
10. (单选题)以下说法错误的是( )。
- A. 存在这样的二叉树,对它采用任何次序遍历其结点访问序列均相同。
- B. 二叉树是树的特殊情形。
- C. 在二叉树只有一棵子树的情况下也要明确指出该子树是左子树还是右子树
- D. 由树转换成二叉树,其根结点的右子树总是空的。
我的答案: B:二叉树是树的特殊情形。;正确答案: B:二叉树是树的特殊情形。;
4.1分
11. (单选题)以下说法正确的是( )。
- A.
若一个树叶是某二叉树前序遍历序列中的最后一个结点,则它必是该子树后序遍历序列中的最后一个结点。
- B.
若一个树叶是某二叉树前序遍历序列中的最后一个结点,则它必是该子树中序遍历序列中的最后一个结点。
- C. 在二叉树中,具有两个子女的父结点,在中序遍历序列中,它的后继结点最多只能有一个子女结点。
- D.
在二叉树中,具有一个子女的父结点,在中序遍历序列中,它没有后继子女结点。
我的答案: C:在二叉树中,具有两个子女的父结点,在中序遍历序列中,它的后继结点最多只能有一个子女结点。;正确答案: C:在二叉树中,具有两个子女的父结点,在中序遍历序列中,它的后继结点最多只能有一个子女结点。;
4.1分
12. (单选题)用顺序存储的方法将完全二叉树中的所有结点逐层存放在数组R[1..n]中,结点R[i]若有左子女,则左子女是结点( )。
- A. R[2i+1]
- B. R[2i]
- C. R[i/2]
- D. R[2i-1]
我的答案: B:R[2i] ;正确答案: B:R[2i] ;
4.1分
二. 填空题(共7题,28.7分)
13. (填空题)
具有n个结点的二叉树,采用二叉链表存储,共有 个空链域。
我的答案:
4.1分
(1) n+1
正确答案:
(1) n+1
14. (填空题)
对于一棵具有n个结点的二叉树,当进行链接存储时,其二叉链表中指针域总数为 个,其中 个用于链接孩子结点,
个空闲着。
我的答案:
0分
(1) n*3
(2) n*2
(3) n
正确答案:
(1) 2n
(2) n-1
(3) n+1
15. (填空题)二叉树的线索化实质是将二叉链表中的_______改为_________。
我的答案:
2分
(1) 空指针
(2) 指向前驱或后继的线索
正确答案:
(1) 空指针
(2) 线索
16. (填空题)
8层完全二叉树至少有 个结点,拥有100个结点的完全二叉树的最大层数为 。
我的答案:
4.1分
(1) 128
(2) 7
正确答案:
(1) 128
(2) 7
17. (填空题)二叉树通常有 存储结构和 存储结构。
我的答案:
4.1分
(1) 顺序
(2) 链式
正确答案:
(1) 顺序
(2) 链式
18. (填空题)
遍历一棵二叉树包括访问 根结点 、遍历左子树 和遍历 三个方面。
我的答案:
4.1分
(1) 右子树
正确答案:
(1) 右子树
19. (填空题)对于一个具有n个结点的二叉树,当它为一棵 二叉树时具有最小高度
我的答案:
4.1分
(1) 完全
正确答案:
(1) 完全
三. 简答题(共5题,22.1分)
20. (简答题)含有60个叶子结点的二叉树的最小高度是多少?
我的答案:
4.1分
n0=60 ,n2=n0-1=59
n=n0+n1+n2=119+n1
当n1=0为完全二叉树,高度最小
h=log2(n+1)=log2120=7
所以最小高度为7
正确答案:
21. (简答题)已知一棵二叉树的中序序列为CBEDAHGIJF、后序序列为CEDBHJIGFA,给出该二叉树的树形表示。
我的答案:
22. (简答题)
给定5个字符a~f,它们的权值集合W={2,3,4,7,8,9},试构造关于W的一棵哈夫曼树,求其带权路径长度WPL和各个字符的哈夫曼树编码。
由权值集合W构建的哈夫曼树编码如图所示。其带权路径长度WPL=(9 7 8)×2 3×4 (2 3)×4=80;
各个字符的哈夫曼树编码:a:0000,b:0001,c:001,d:10,e:11,f:01。
23. (简答题)
假设二叉树中的每个结点值为单个字符,采用二叉链表存储结构存储。设计一个算法,求二叉树中最小值的结点值。
我的答案:
3.3分
char findMinValue(TreeNode* root) {
if (root == NULL) {
return '\0';
}
char leftMin = findMinValue(root->left);
char rightMin = findMinValue(root->right);
char minValue = root->val;
if (leftMin != '\0' && leftMin < minValue) {
minValue = leftMin;
}
if (rightMin != '\0' && rightMin < minValue) {
minValue = rightMin;
}
return minValue;
}
正确答案:
24. (简答题)假设二叉树用用二叉链表存储结构,设计一个算法把二叉树中的左、右子树进行交换。
我的答案:
void ReChange(BiTree T)
{
BiTree p = NULL;
if (T == NULL) {
return ;
} else {
p = T->lchild;
T->lchild = T->rchild;
T->rchild = p;
}
ReChange(T->lchild);
ReChange(T->rchild);
}