PTA 线性结构/AVL树/哈夫曼树错题
1.稀疏矩阵压缩存储后,必会失去随机存取功能。
T | F |
解析:稀疏矩阵的存储方式是将数据压缩存储进一维数组,数组下标与之前的不相同了,想要某一元素需要根据公式计算它的下标,所以说是失去了随机存取的功能。
2.[2020真题]将一个10×10对称矩阵M的上三角部分的元素m [ i , j ](1≤i≤j≤10)按列优先存入C语言的一维数组N中,元素m[ 7,2 ]在N中下标是( C )
A.15
B.16
C.22
D.23
解析:在正式分析这道题前,先简单说一下这个压缩存储的原理,具体看下图。
核心是算出在此元素前有多少个元素。
所以根据公式(注意按列优先,且上三角),算出在[ 7 , 2 ]前面已经有sum = (7-1)*(1 + (7-1))/ 2 = 21,第7列 第2行 m元素前有1个元素(注意数组下标从1开始),所以m应该是:21 + 1 + 1 = 23个元素,因为C语言中数组下标从0开始,所以对应下标是22。
3.已知二维数组A[0..4][0..5],则A按行优先存储时元素A[3][5]的地址与A按列优先存储时元素( )的地址相同。( B )
A.A[2][4]
B.A[3][4]
C.A[3][5]
D.A[4][3]
解析:读题知道,此矩阵(二维数组)下标从零开始,所以矩阵元素下标 0 <= i <= 4,0 <= j <= 5,也就是说这个矩阵每行有5个元素,每列6个元素。所以当A按行优先存储时,前面一共有:sum = 6 * 3 + 4 = 23,而A是第 23 + 1 = 24个元素。下标为23(数组下标默认从0开始)。
再来看选项(按列优先);
A,此元素前有sum = 4 * 5 + 2 = 22,此元素是第22+1个,存储中下标是22。
B,此元素前有sum = 4 * 5 + 3 = 23,此元素是第23+1个,存储下标是23。
C,此元素前有sum = 5 * 5 + 3 = 28,此元素是个28+1个,存储下标为29。
D,此元素前有sum = 5 * 3 + 4 =19,此元素是第19+1个,存储下标19。
----------------------------------------------------------树-------------------------------------------------------------------
因为有英文题,补充几个单词:
inorder traversal :先序遍历
perfect binary tree:完美二叉树 complete binary tree:完全二叉树
non-leaf / leaf:非叶 / 叶节点
iff:当且仅当
1.An AVL tree with the balance factors of all the non-leaf nodes being 0 must be a perfect binary tree.
T | F |
解析:这道题中文意思是,如果一颗AVL树所有非叶节点的平衡因子都为0,那么这棵树一定是完美二叉树。
回答之前,先看一下完美二叉树定义:所有分支节点都存在左右子树,且所有叶节点都在同一层上。 这句话什么意思呢,意思是所有节点度都为0,因为左右子树也都为满足同时有左右子树且叶节点在同一层上。所以这句话对的。
2.For an AVL tree, the balance factors of all the non-leaf nodes are 0 iff the tree is a complete binary tree.
T | F |
解析:这道题中文意思是,一颗AVL树只有在所有非叶节点的平衡因子都为零时才是一颗完全二叉树。
这道题显然在考什么是完全二叉树,注意,和完美二叉树不同,完全二叉树叶节点可以出现在树的最下层和此下层,也就是说对于一颗完全二叉树来说,父节点的平衡因子可以是-1,所以这个“ iff ”就用的不对了。
3.In an AVL tree, it is possible to have this situation that the balance factors of a node and both of its children are all -1.
T | F |
解析:这道题中文意思是,存在一颗AVL树的结点的左右孩子的平衡因子都是-1。
这个也很好理解了,就AVL树定义,结点的平衡因子集{ -1,0,1},所以这种情况是可能存在的。
4.平衡二叉树中,若某个结点的左、右孩子的平衡因子为零,则该结点的平衡因子一定为零。
T | F |
解析:这道题有点绕,来层层解析,首先对于一个结点,它的左右孩子的平衡因子为零,代表它的左孩子和右孩子的左右子树等高,但是没说左孩子子树的深度一定等于右孩子子树的深度,所以对于根节点来说,是不一定平衡因子相同的。
5.如果AVL树的深度为5(空树的深度定义为0),则此树最少有多少个结点?( A )
A.12
B.20
C.33
D.64
解析:这道题是一个考点,就是AVL树的最少结点。如何推导的可以去看mooc浙江大学数据结构,我直接给出一个规律 n = F(h+2) - 1;(F(h+2) 代表(层数+2)对应的斐波那契数),就是那个1 1 2 3 5 8....的斐波那契数。例如此题中说第5层,那么F(5+2) = F7 = 13,n = 13 - 1 = 12。
补充:对于给定结点数,生成的AVL树深度最多为log2n(2为底数)。
6.During inserting { 42, 26, 8, 70, 102, 56, 2} into an initially empty AVL tree, which of the following statements is true?( A )
A.The resulted AVL tree is also a completed binary tree;
B.There are 4 rotations: LL,RR,LR,LL
C.There are 4 rotations: LL,RR,LL,RL
D.There are 3 rotations: LL,RR,RL
解析:将{ 42, 26, 8, 70, 102, 56, 2}这几个数初始化为一颗AVL树,接下来是我画的插入流程图。
经历了三次旋转分别是LL,RR,LL,但结果是一颗完全二叉树(完美二叉树)。
7.If there are 14 nodes in an AVL tree, then the maximum depth of the tree is ____. The depth of an empty tree is defined to be 0.( C )
A.3
B.4
C.5
D.6
解析:这道题和前面第5题有点相似,注意题目说空树的深度定义为0就行了。
8.When generating Huffman codes for n distinct characters, if the corresponding Huffman tree has 115 nodes in total, then the value of n must be:( C )
A.56
B.57
C.58
D.60
解析:题目意思是,将 n 个不同的字符进行哈夫曼编码,如果最终这个哈夫曼编码树有115个结点,那么 n 的值应该是多少。
题意清晰了就很明了了,哈夫曼前缀码树本质还是一个哈夫曼树,哈夫曼树的结点个数为 2n - 1 ,也就是可以得出一个等式,2n - 1 = 115,求出n等于58。
9.为五个使用频率不同的字符设计哈夫曼编码,下列方案中哪个不可能是哈夫曼编码?( A )
A.00,100,101,110,111
B.000,001,01,10,11
C.0000,0001,001,01,1
D.000,001,010,011,1
解析:这道题是一道很经典的题,注意哈夫曼前缀码树没有度为1的结点。一眼就能看出A错了,因为没有01,相当于根的左孩子的度为1,明显违反前缀码树的定义。
10.已知不相交集合用数组表示为{ 4, 6, 5, 2, -3, -4, 3 }。若集合元素从1到7编号,则调用Union(Find(7),Find(1))
(按规模求并,并且带路径压缩)后的结果数组为:( D )
A.{ 4, 6, 5, 2, 6, -7, 3 }
B.{ 4, 6, 5, 2, -7, 5, 3 }
C.{ 6, 6, 5, 6, -7, 5, 5 }
D.{ 6, 6, 5, 6, 6, -7, 5 }
解析:这是一道并查集的题目,并查集需要掌握的只有三个点,1存储方式,2查找与合并,3路径压缩。现在来分析这道题,先进行find操作,找出7的根结点是5,5底下挂了3个孩子;然后找到1的根节点是6,6底下挂了4个孩子,根据Union算法的要求,将孩子少的挂到孩子多的根结点身上,所以将5挂到6下面,而且要求带路径压缩,所以答案选D,具体看下图。
------------------------------------------------------------图----------------------------------------------------------------
1.Kruskal's algorithm is to grow the minimum spanning tree by adding one edge, and thus an associated vertex, to the tree in each stage.
T | F |
解析:题目中文意思是,Kruskal算法是以在每个阶段插入一条边,从而添加一个结点,最后生成Spanning tree(最小生成树)的过程。
这里明显错了哈,Kruskal算法初始是一个没有边的森林,通过插入边生成最小生成树,而不是通过插入边完善顶点。
2.If graph G is a connected graph, the spanning tree of G is a maximal connected subgraph containing all n vertices of G.
T | F |
解析:题目中文意思是,如果图G是一个连通图,那么G的生成树是G的一个包含G所有顶点的极大连通子图。如果G是无向图,那么G的极大连通子图(也称连通分量)是唯一的,且无向图G的生成树不是唯一的,只要遍历一次G就能生成一颗生成树。
3.Let M be the minimum spanning tree of a weighted graph G. Then the path in M between V1 and V2 must be the shortest path between them in G.
T | F |
解析:题目中文意思是,如果M是带权图G的最小生成树,那么在M中,V1,V2这两个顶点间的路径一定是原图G里这两个顶点间所有路径里最短的。
这个很容易选错,就是回顾一下,最小生成树是边权值总和最少的,举个栗子:
4.
In a weighted graph, if the length of the shortest path from b
to a
is 10, and there exists an edge of weight 3 between c
and b
, then how many of the following statements is/are TRUE?( B )
- The length of the shortest path from
c
toa
must be 13. - The length of the shortest path from
c
toa
must be 7. - The length of the shortest path from
c
toa
must be no greater than 13. - The length of the shortest path from
c
toa
must be no less than 7.
A.1
B.2
C.3
D.4
解析:这道题中文意思是,如果在一个带权图中,顶点b到顶点a的最短路径是10,而且c到b中间有一条权重为3的路,下面说法有几个是对的。
看第一个,肯定错了。第二个也是。画图就知道既然3存在,那么最短路径最大不可能超过13了。而且最少不可能比7还小,如果比7小的话,b-a的最短路径就不是10了。
PTA 线性结构/AVL树/哈夫曼树错题相关推荐
- 哈夫曼树(带权路径长度+树的带权路径长度+哈夫曼树定义+构造哈夫曼树+哈夫曼树性质+哈夫曼编码+计算平均码长-这里指WPL)
带权路径长度 树的带权路径长度WPL 哈夫曼树 哈夫曼树构造 哈夫曼树性质 哈夫曼编码 固定长度编码 可变长编码 前缀编码 固定长度编码.可变长编码.前缀编码.哈夫曼编码 思维倒图 试题
- 数据结构与算法之Huffman tree(赫夫曼树 / 霍夫曼树 / 哈夫曼树 / 最优二叉树)
目录 赫夫曼树概述 定义 构造赫夫曼树步骤 代码实现 赫夫曼树概述 HuffmanTree因为翻译不同所以有其他的名字:赫夫曼树.霍夫曼树.哈夫曼树 赫夫曼树又称最优二叉树,是一种带权路径长度最短的二 ...
- 数据结构-树(哈夫曼树)
树的基本概念 定义 树(Tree)是n(n>=0)个结点的有限集.n=0时成为空树. 在任意一个非空树中:有且仅有一个特定的称为根(Root)的结点:n>1时,其余结点可分为m(m> ...
- 快速画出哈夫曼树/霍夫曼树/最优树
2019独角兽企业重金招聘Python工程师标准>>> 哈夫曼树(霍夫曼树)又称为最优二叉树. n个叶子结点的哈夫曼树共有几个结点 ? Huffman 树是所谓的正则二叉树,只有度为 ...
- 种树:二叉树、二叉搜索树、AVL树、红黑树、哈夫曼树、B树、树与森林
虽然今天不是植树节,但是我今天想种树. 文章目录 树,什么是树? 二叉树 定义 二叉树的创建 二叉树的前中后序遍历 前序遍历: 中序遍历 后序遍历 已知前序.中序遍历结果,还原二叉树 已知后序.中序遍 ...
- 哈夫曼树--链式结构(建立huffman树、编码、解码)
引子: 用链式结构来建立哈夫曼树. 总体思路是: 将每一棵树(这是每一棵树只有一个节点,头节点)放在一个优先队列中(下面的是链表实现的优先队列),频率(rate)小的在队列头,取出队列头两个,频率相加 ...
- 数据结构之二叉树,二叉树存储结构,二叉树遍历,霍夫曼树以及图解
数据结构之二叉树 树 什么是树? 树是一种一对多的数据结构.树有很多子集,比如:二叉树.完全二叉树.满二叉树.二叉搜索树等等. 树的特征: 没有父结点的叫做根,一个树有且只有一个根: 每个结点有0个或 ...
- 数据结构与算法学习④(哈夫曼树 图 分治回溯和递归)
数据结构与算法学习④(哈夫曼树 图 回溯和递归 数据结构与算法学习④ 1.哈夫曼树 1.1.相关概念 1.2.哈夫曼树的构建 1.3.哈夫曼编码 1.4.面试题 2.图 2.1.图的相关概念 2.2. ...
- 哈夫曼树的java实现_java实现哈夫曼树
哈夫曼译码,就是将输入的译码还原成对应的字符. 抽象的算法描述:将建立哈夫曼树.实现哈夫曼编码.哈夫曼译码都定义成 子函数的的形式, 然后在主函数中调用它们...... 数据结构课程设计设计题目: 哈 ...
最新文章
- 知识图谱和图分析与可视化
- 使用DOM操作样式表
- Android常见面试题
- python列表_Python中列表(list)操作方法汇总
- 树形结构与关系数据库之闭包表
- coco与voc相互转化
- 汇编指令的学习3——协处理器cp15的操作指令mcr、mrc
- 设计模式--观察者模式
- matlab求心率,心电图QRS波检测(计算心跳次数)
- Hive表中修改列位置,更改类型、移动位置(impala支不支持更改位置)
- 大数据技术成功案例和趋势 2021-25
- js如何获取当前页面url网址信息
- java 打印字母塔_打印字母塔
- 十大热门语言(程序员必备之路)
- 关于Webgl实际中遇到的一些坑,与大家分享。
- python中包的导入
- 如何在 oracle 集群环境下修改私网信息 (文档 ID 2103317.1)
- css动画走马灯5秒,用animation制作走马灯
- oracle c3p0 死锁,C3P0老是莫名其妙就线程死锁,但不影响程序
- 大学4年里要读的100本书
热门文章
- 基于深度学习模型的人像抠图
- 快速创建精彩的Flash游戏 (二) Flash3D游戏引擎简介
- css设置元素抛物线,CSS3 transition 实现抛物线动画
- Make VLC player support polarized 3D.让VLC播放器支持偏振3D效果。
- #入坑keychron#你还没一起入坑吗?
- Matlab更换编辑器配色方案
- 计算机科学速成课翻译,BBC地道英语 -Crash course 速成课
- 使用Navicat Premium连接阿里云服务器PostgreSQL数据库
- 如何将彩色的图片变成黑白?
- html文字折叠隐藏出现问题,javascript实现文字隐藏、展开收起的简单示例