- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
[经济学]数据结构基础C语言版清华大学出版社第5章树
实验3(1):二叉树的遍历 实验目的:掌握二叉树遍历的方法以及应用 实验要求:创建Figure-1 所示的二叉树,输出先序、中序、后序及层序遍历的结果,最后计算并输出这棵树的叶子个数和高度。 Figure-1 实验3(2):优先级队列的实现 问题描述:模拟机器租用服务的管理过程 管理过程:机器的租用费用按时计算,优先级由顾客的出资费用确定,只要有可出租的机器,则出租给优先级最高(出资费用最高)的顾客。顾客到达时,根据优先级排队等候服务。 算法采用大根堆存放顾客的信息(顾客的姓名及出资费用): (1)当有“顾客到达”命令(用a表示)时,顾客插入大根堆。 (2)当有“让下一个顾客租用机器”命令(用n表示)时,优先级最高的顾客从大根堆中删除并显示相应信息。 (3)当有“退出”命令(用q表示)时,程序结束。 输入输出示例(红字部分为输入内容) 请输入命令:a 请输入顾客姓名及出资费用:wzp, 50 请输入命令:a 请输入顾客姓名及出资费用:lxh, 60 请输入命令:n 请lxh租用机器 请输入命令:a 请输入顾客姓名及出资费用:lwz, 58 请输入命令:h 无效命令 请输入命令:q 抱歉!机器故障,无法提供服务 树的表示法 左孩子右兄弟表示法 树的表示法 §5.2.1 二叉树的抽象数据类型定义 二叉树的抽象数据类型定义 线索二叉树 线索二叉树结点的C语言定义: 线索二叉树的提出 1960年:A. J. Perlis and C. Thornton Communications of the ACM Volume 3 Issue 4, April 1960 Symbol manipulation by threaded lists 中序线索二叉树 遍历中序线索树(有头结点) Tree指向头结点 头结点的rightThread为FALSE,rightChild指向自己 练习 先序序列(DLR):ABCDEFGHI 中序序列(LDR):CBDAFHGIE 练习 写出将30,40,5,15,6,70,25,50插入到初始为空的AVL树后的结果。 作业3 1. ( P158, 第3题):画出图5.15的两种内部存储示意图,一种是顺序表示,一种是链式表示。 2. (P164, 第1题):写出图5.10的中序、先序、后序、层次遍历结果。 3. (P164, 第3题):写出图5.15的中序、先序、后序、层次遍历结果。 4. (P168, 第1题):编写C函数,计算二叉树的结点总数。指出函数的时间复杂度。 5. (P168, 第2题):编写C函数swapTree,把二叉树中所有结点的左右孩子交换,图5.20是交换的例子。 6. 写出将3,1,4,6,9,2,5,7插入到初始为空的大根堆中的结果。并指出删除根后的结果。 7. 写出将3,1,4,6,9,2,5,7插入到初始为空的二叉查找树中的结果。并指出删除根后的结果。 8. 写出将2,1,4,5,9,3,6,7插入到初始为空的AVL树后的结果。 作业3(续) 9. 给定一段包括23个字符的文本: OH-THIS-IS-SOOOO-GOOOOD,回答以下问题 (a).如果采用1个字节表示一个字符,则要表示该段文本共需多少位? (b).如果采用等长编码表示每个字符,则要表示该段文本共需多少位? (c).请对该文本中出现的8个互不相等的字符的Huffman编码,如用该编 码方法表示该段文本,则共需多少位? 10.给定如下的二叉树的数组表示,请回答: 1 2 3 4 5 6 7 8 9 10 11 12 13 (1)画出该二叉树的逻辑结构; (2)画出该二叉树的二叉链表表示示意图; (2)给出该二叉树的先序、中序、层次遍历结果; (3)给出该二叉树的线索化二叉树; (4)把该二叉树转换成森林,并给出先序遍历该森林的结果。 构造哈夫曼树算法的步骤 直观看:在哈夫曼树中权越大叶子离根越近,则具有最小带权路径长度。其中图(c)所示二叉树的带权路径长度最小,可以证明,它是所有以7,5,4,2 为叶子结点权值构造的二叉树中带权路径长度最小的一棵二叉树。 构造哈夫曼树过程演示 哈夫曼树的存储结构 哈夫曼树是求某种最优方案,由于哈夫曼树中没有度为1的结点,因此一棵有n个叶子的哈夫曼树共有2n-1个结点(二叉树性质3:n0=n2+1),可以用一个大小为2n-1的一维数组存放哈夫曼树的各
文档评论(0)