java语言实现的二叉树的各种操作(包括递归与非递归遍历二叉树,求二叉树的高度,节点总数,叶子节点等)
2024/2/19 15:09:24 21KB java 数据结构 二叉树 递归
1
1.一棵二叉树的顺序存储情况如下:树中,度为2的结点数为()。
A.1B.2C.3D.42.一棵“完全二叉树”结点数为25,高度为()。
A.4B.5C.6D.不确定3.下列说法中,()是正确的。
A.二叉树就是度为2的树B.二叉树中不存在度大于2的结点C.二叉树是有序树D.二叉树中每个结点的度均为24.一棵二叉树的前序遍历序列为ABCDEFG,它的中序遍历序列可能是()。
A.CABDEFGB.BCDAEFGC.DACEFBGD.ADBCFEG5.线索二叉树中的线索指的是()。
A.左孩子B.遍历C.指针D.标志6.建立线索二叉树的目的是()。
A.方便查找某结点的前驱或后继B.方便二叉树的插入与删除C.方便查找某结点的双亲D.使二叉树的遍历结果唯一7.有abc三个结点的右单枝二叉树的顺序存储结构应该用()示意。
A.abcB.ab^cC.ab^^cD.a^b^^^c8.一颗有2046个结点的完全二叉树的第10层上共有()个结点。
A.511B.512C.1023D.10249.一棵完全二叉树一定是一棵()。
A.平衡二叉树B.二叉排序树C.堆D.哈夫曼树10.某二叉树的中序遍历序列和后序遍历序列正好相反,则该二叉树一定是()的二叉树。
A.空或只有一个结点B.高度等于其结点数C.任一结点无左孩子D.任一结点无右孩子11.一棵二叉树的顺序存储情况如下:123456789101112131415ABCDE0F00GH000X结点D的左孩子结点为()。
A.EB.CC.FD.没有12.一棵“完全二叉树”结点数为25,高度为()。
A.4B.5C.6D.不确定二、填空题(每空3分,共18分)。
1.树的路径长度:是从树根到每个结点的路径长度之和。
对结点数相同的树来说,路径长度最短的是完全二叉树。
2.在有n个叶子结点的哈夫曼树中,总结点数是2n-1。
3.在有n个结点的二叉链表中,值为非空的链域的个数为n-1。
4.某二叉树的中序遍历序列和后序遍历序列正好相反,则该二叉树一定是任一结点无左孩子的二叉树。
5.深度为k的二叉树最多有个结点,最少有k个结点。
三、综合题(共58分)。
1.假定字符集{a,b,c,d,e,f}中的字符在电码中出现的次数如下:字符abcdef频度9122023155构造一棵哈夫曼树(6分),给出每个字符的哈夫曼编码(4分),并计算哈夫曼树的加权路径长度WPL(2分)。
(符合WPL最小的均为哈夫曼树,答案不唯一)哈夫曼编码:2.假设用于通信的电文由字符集{a,b,c,d,e,f,g}中的字符构成,它们在电文中出现的频率分别为{0.31,0.16,0.10,0.08,0.11,0.20,0.04}。
要求:(1)为这7个字符设计哈夫曼树(6分)。
(2)据此哈夫曼树设计哈夫曼编码(4分)。
(3)假设电文的长度为100字符,使用哈夫曼编码比使用3位二进制数等长编码使电文总长压缩多少?(4分)(1)为这7个字符设计哈夫曼树为(符合WPL最小的均为哈夫曼树,答案不唯一):(2)哈夫曼编码为:a:01;b:001;c:100;d:0001;e:101;f:11;g:0000(3)假设电文的长度为100字符,使用哈夫曼编码比使用3位二进制数等长编码使电文总长压缩多少?采用等长码,100个字符需要300位二进制数,采用哈夫曼编码发送这100个字符需要261二进制位,压缩了30
1
1.对于二叉排序树,下面的说法()是正确的。
A.二叉排序树是动态树表,查找不成功时插入新结点时,会引起树的重新分裂和组合B.对二叉排序树进行层序遍历可得到有序序列C.用逐点插入法构造二叉排序树时,若先后插入的关键字有序,二叉排序树的深度最大D.在二叉排序树中进行查找,关键字的比较次数不超过结点数的1/22.在有n个结点且为完全二叉树的二叉排序树中查找一个键值,其平均比较次数的数量级为()。
A.O(n)B.O(log2n)C.O(n*log2n)D.O(n2)3.静态查找与动态查找的根本区别在于()。
A.它们的逻辑结构不一样B.施加在其上的操作不同C.所包含的数据元素类型不一样D.存储实现不一样4.已知一个有序表为{12,18,24,35,47,50,62,83,90,115,134},当折半查找值为90的元素时,经过()次比较后查找成功。
A.2B.3C.4D.55.已知数据序列为(34,76,45,18,26,54,92,65),按照依次插入结点的方法生成一棵二叉排序树,则该树的深度为()。
A.4B.5C.6D.76.设散列表表长m=14,散列函数H(k)=kmod11。
表中已有15,38,61,84四个元素,如果用线性探测法处理冲突,则元素49的存储地址是()。
A.8B.3C.5D.97.平衡二叉树的查找效率呈()数量级。
A.常数阶B.线性阶C.对数阶D.平方阶8.设输入序列为{20,11,12,…},构造一棵平衡二叉树,当插入值为12的结点时发生了不平衡,则应该进行的平衡旋转是()。
A.LLB.LRC.RLD.RR二、填空题(每空3分,共24分)。
1.在有序表A[1..18]中,采用二分查找算法查找元素值等于A[7]的元素,所比较过的元素的下标依次为。
2.利用逐点插入法建立序列(61,75,44,99,77,30,36,45)对应的二叉排序树以后,查找元素36要进行次元素间的比较,查找序列为。
3.用顺序查找法在长度为n的线性表中进行查找,在等概率情况下,查找成功的平均比较次数是。
4.二分查找算法描述如下:intSearch_Bin(SSTST,KTkey){low=1;high=ST.length;while(low<=high){mid=(low+high)/2;if(key==ST.elem[mid].key)returnmid;elseif(key<ST.elem[mid].key);else;}return0;}5.链式二叉树的定义如下:typedefstructBtn{TElemTypedata;;}BTN,*BT;6.在有n个叶子结点的哈夫曼树中,总结点数是。
三、综合题(共52分)。
1.(共12分)假定关键字输入序列为19,21,47,32,8,23,41,45,40,画出建立二叉平衡树的过程。
2.(共15分)有关键字{13,28,31,15,49,36,22,50,35,18,48,20},Hash函数为H=keymod13,冲突解决策略为链地址法,请构造Hash表(12分),并计算平均查找长度(3分)。
ASL=3.(共10分)设关键字码序列{20,35,40,15,30,25},给出平衡二叉树的构造过程。
4.(共15分)设哈希表长为m=13,散列函数为H(k)=kmod11,关键字序列为5,7,16,12,11,21,31,51,17
2023/10/29 19:17:51 88KB 数据结构 第九章  查找 作业
1
在当今信息爆炸时代,如何采用有效的数据压缩技术节省数据文件的存储空间和计算机网络的传送时间已越来越引起人们的重视,哈夫曼正是一种应用广泛且非常有效的数据压缩技术。
哈夫曼编码的应用很广泛,利用哈夫曼树求得用于通信的二进制编码称为哈夫曼编码。
树中从根到每一个叶子都有一条路径,对路径上的各分支约定:指向左子树的分支表示“0”码,指向右子树的分支表示“1”码,取每条路径上的“0”或“1”的序列作为和各叶子对应的字符的编码,这就是哈夫曼编码。
而与之相反的过程就称为译码。
本文主要完成哈夫曼树的建立、哈夫曼编码和译码的功能。
我们主要运用的数据结构是哈夫曼结点结构和编码结构,采用顺序链表形式存储。
整体思路清晰明了,算法通俗易懂,通过调试运行,执行结果真确。
2023/8/4 16:55:47 160KB 哈夫曼;编码;译码;
1
二叉树指定第i层输出以及打印叶子结点,已ac过
2023/7/19 6:18:50 3KB c++
1
给定一棵深度为depth的满二叉树,并对该二叉树从根结点开始自上而下,每一层从左到右,从1开始进行编号,则结点的编号序列就是1,2,3,…,2depth-1。
如下图给出的深度为4的满二叉树。
现在在结点1处放一个小球,它会往下落。
二叉树中每个结点处都有一个开关,初始时全部关闭,每当有小球落到一个结点时,该结点上的开关的状态就会改变。
当一个小球落到某个结点时,如果该结点上的开关的状态是打开的,则往左走,否则,往右走,直到走到叶子结点。
现在有number个小球依次从结点1处开始下落,那么最后一个小球将会落到哪里呢?输入满二叉树的深度depth(depth<=10)和小球个数number,输出第number个小球最后所在的叶子结点的编号。
例如:若输入42,则输出12若输入34,则输出7若输入101,则输出512若输入22,则输出3若输入8128,则输出255
2023/7/7 20:13:03 37KB 数据结构 C C++
1
ztree模糊搜索demo,根据关键字显示叶子节点
2023/6/3 14:35:28 67KB ztree 模糊搜索
1
从一级到七级叶子类目。
CREATETABLE`dim_itemcat`(`cat_id`BIGINT(20)NULLDEFAULTNULLCOMMENT'类目ID',`name`VARCHAR(50)NULLDEFAULTNULLCOMMENT'类目名称',`parent_cid`BIGINT(20)NULLDEFAULTNULLCOMMENT'父类目ID',`is_parent`VARCHAR(10)NULLDEFAULTNULLCOMMENT'是否为父类目',`level`INT(1)NULLDEFAULTNULLCOMMENT'层级',`related`INT(1)NULLDEFAULTNULL,`is_track`INT(1)NULLDEFAULTNULL,UNIQUEINDEX`cid_unique`(`cat_id`)USINGBTREE,INDEX`cid`(`cat_id`)USINGBTREE,INDEX`level`(`level`)USINGBTREE,INDEX`name`(`name`),INDEX`is_track`(`is_track`))COMMENT='行业类目维度表:二列各式'COLLATE='utf8_general_ci'ENGINE=InnoDB;
2023/5/31 7:28:05 212KB 123
1
方案一个哈夫曼编码/译码体系,对于字符串举行编码以及译码底子申请:⚫从文件中读取一篇英文文档(文本文件1),统计文档中各个字符涌现的次数;
⚫以各个字符涌现的次数(或者概率)为叶子结点的权值结构一棵哈夫曼树,并为每一个叶子结点结构哈夫曼编码;
⚫输入每一个叶子结点的哈夫曼编码;
⚫盘算并输入字符的平均编码长度(准确到小数点后两位)。
⚫将该英文文档内容转换成对于应的电文编码,并留存在一个文本文件2中。
⚫将上一步患上到的文件中的电文编码,复原为原有的英文内容,并再留存在一个文本文件3中;
⚫比力文件1以及文件2能否残缺不并吞输入。
2023/4/20 6:58:35 96KB 数据结构 C C++
1
二叉树可实施代码,用了就知道。
二叉树的遍历、线索及使用(用递归或者非递归的方式均能够)[下场描摹]建树二叉树,并输入二叉树的先序,中序以及后序遍历序列,以及二叉树的叶子数。
[底子申请]申请依据读取的元素建树二叉树,能输入种种遍历。
[实现揭示]可经由输入带空格的前序序列建树二叉链表。
1
共 34 条记录 首页 上一页 下一页 尾页
在日常工作中,钉钉打卡成了我生活中不可或缺的一部分。然而,有时候这个看似简单的任务却给我带来了不少烦恼。 每天早晚,我总是得牢记打开钉钉应用,点击"工作台",再找到"考勤打卡"进行签到。有时候因为工作忙碌,会忘记打卡,导致考勤异常,影响当月的工作评价。而且,由于我使用的是苹果手机,有时候系统更新后,钉钉的某些功能会出现异常,使得打卡变得更加麻烦。 另外,我的家人使用的是安卓手机,他们也经常抱怨钉钉打卡的繁琐。尤其是对于那些不太熟悉手机操作的长辈来说,每次打卡都是一次挑战。他们总是担心自己会操作失误,导致打卡失败。 为了解决这些烦恼,我开始思考是否可以通过编写一个全自动化脚本来实现钉钉打卡。经过一段时间的摸索和学习,我终于成功编写出了一个适用于苹果和安卓系统的钉钉打卡脚本。
2024-04-09 15:03 15KB 钉钉 钉钉打卡