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 )

  1. The length of the shortest path from c to a must be 13.
  2. The length of the shortest path from c to a must be 7.
  3. The length of the shortest path from c to a must be no greater than 13.
  4. The length of the shortest path from c to a 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树/哈夫曼树错题相关推荐

  1. 哈夫曼树(带权路径长度+树的带权路径长度+哈夫曼树定义+构造哈夫曼树+哈夫曼树性质+哈夫曼编码+计算平均码长-这里指WPL)

    带权路径长度 树的带权路径长度WPL 哈夫曼树 哈夫曼树构造 哈夫曼树性质 哈夫曼编码 固定长度编码 可变长编码 前缀编码 固定长度编码.可变长编码.前缀编码.哈夫曼编码 思维倒图 试题

  2. 数据结构与算法之Huffman tree(赫夫曼树 / 霍夫曼树 / 哈夫曼树 / 最优二叉树)

    目录 赫夫曼树概述 定义 构造赫夫曼树步骤 代码实现 赫夫曼树概述 HuffmanTree因为翻译不同所以有其他的名字:赫夫曼树.霍夫曼树.哈夫曼树 赫夫曼树又称最优二叉树,是一种带权路径长度最短的二 ...

  3. 数据结构-树(哈夫曼树)

    树的基本概念 定义 树(Tree)是n(n>=0)个结点的有限集.n=0时成为空树. 在任意一个非空树中:有且仅有一个特定的称为根(Root)的结点:n>1时,其余结点可分为m(m> ...

  4. 快速画出哈夫曼树/霍夫曼树/最优树

    2019独角兽企业重金招聘Python工程师标准>>> 哈夫曼树(霍夫曼树)又称为最优二叉树. n个叶子结点的哈夫曼树共有几个结点 ? Huffman 树是所谓的正则二叉树,只有度为 ...

  5. 种树:二叉树、二叉搜索树、AVL树、红黑树、哈夫曼树、B树、树与森林

    虽然今天不是植树节,但是我今天想种树. 文章目录 树,什么是树? 二叉树 定义 二叉树的创建 二叉树的前中后序遍历 前序遍历: 中序遍历 后序遍历 已知前序.中序遍历结果,还原二叉树 已知后序.中序遍 ...

  6. 哈夫曼树--链式结构(建立huffman树、编码、解码)

    引子: 用链式结构来建立哈夫曼树. 总体思路是: 将每一棵树(这是每一棵树只有一个节点,头节点)放在一个优先队列中(下面的是链表实现的优先队列),频率(rate)小的在队列头,取出队列头两个,频率相加 ...

  7. 数据结构之二叉树,二叉树存储结构,二叉树遍历,霍夫曼树以及图解

    数据结构之二叉树 树 什么是树? 树是一种一对多的数据结构.树有很多子集,比如:二叉树.完全二叉树.满二叉树.二叉搜索树等等. 树的特征: 没有父结点的叫做根,一个树有且只有一个根: 每个结点有0个或 ...

  8. 数据结构与算法学习④(哈夫曼树 图 分治回溯和递归)

    数据结构与算法学习④(哈夫曼树 图 回溯和递归 数据结构与算法学习④ 1.哈夫曼树 1.1.相关概念 1.2.哈夫曼树的构建 1.3.哈夫曼编码 1.4.面试题 2.图 2.1.图的相关概念 2.2. ...

  9. 哈夫曼树的java实现_java实现哈夫曼树

    哈夫曼译码,就是将输入的译码还原成对应的字符. 抽象的算法描述:将建立哈夫曼树.实现哈夫曼编码.哈夫曼译码都定义成 子函数的的形式, 然后在主函数中调用它们...... 数据结构课程设计设计题目: 哈 ...

最新文章

  1. 知识图谱和图分析与可视化
  2. 使用DOM操作样式表
  3. Android常见面试题
  4. python列表_Python中列表(list)操作方法汇总
  5. 树形结构与关系数据库之闭包表
  6. coco与voc相互转化
  7. 汇编指令的学习3——协处理器cp15的操作指令mcr、mrc
  8. 设计模式--观察者模式
  9. matlab求心率,心电图QRS波检测(计算心跳次数)
  10. Hive表中修改列位置,更改类型、移动位置(impala支不支持更改位置)
  11. 大数据技术成功案例和趋势 2021-25
  12. js如何获取当前页面url网址信息
  13. java 打印字母塔_打印字母塔
  14. 十大热门语言(程序员必备之路)
  15. 关于Webgl实际中遇到的一些坑,与大家分享。
  16. python中包的导入
  17. 如何在 oracle 集群环境下修改私网信息 (文档 ID 2103317.1)
  18. css动画走马灯5秒,用animation制作走马灯
  19. oracle c3p0 死锁,C3P0老是莫名其妙就线程死锁,但不影响程序
  20. 大学4年里要读的100本书

热门文章

  1. 基于深度学习模型的人像抠图
  2. 快速创建精彩的Flash游戏 (二) Flash3D游戏引擎简介
  3. css设置元素抛物线,CSS3 transition 实现抛物线动画
  4. Make VLC player support polarized 3D.让VLC播放器支持偏振3D效果。
  5. #入坑keychron#你还没一起入坑吗?
  6. Matlab更换编辑器配色方案
  7. 计算机科学速成课翻译,BBC地道英语 -Crash course 速成课
  8. 使用Navicat Premium连接阿里云服务器PostgreSQL数据库
  9. 如何将彩色的图片变成黑白?
  10. html文字折叠隐藏出现问题,javascript实现文字隐藏、展开收起的简单示例