- 1、本文档共41页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
用于存储放入节点的数据元素
二叉树 二叉树(Binary Tree)是指树的度为2的有序树。它是一种最简单、而且最重要的树,在计算机科学领域有着广泛地应用 定义 二叉树或者是一棵空树,或者是一棵由一个根节点和两棵互不相交的分别称作根的左子树和右子树所组成的非空树,左子树和右子树又同样都是一棵二叉树 二叉树的例子 二叉树重要性质 二叉树上终端节点数等于双分支节点数加1 二叉树上第i层上至多有2i-1个节点(i≥1) 性质3深度为h的二叉树至多有2h-1个节点 满二叉树(a)和完全二叉树 (b) 理想平衡树(a)和普通二叉树(b) 二叉树的存储结构 顺序存储结构 顺序存储一棵二叉树时,首先对该树中每个节点进行编号,然后以各节点的编号为下标,把各节点的值对应存储到一维数组中。树中各节点的编号与等深度的完全二叉树中对应位置上节点的编号相同 顺序存储的二叉树 二叉树的存储结构 链接存储结构 在二叉树的链接存储:在每个节点中设置三个域:值域、左指针域和右指针域,其节点结构如下图: 二叉树的存储结构 在节点结构中再增加一个parent指针域,用来指向其父节点 这种存储结构既便于查找子节点,也便于查找父节点 二叉链表的字符串数组表达 带父节点的二叉链表字符串表达 二叉树的遍历 二叉树的遍历是二叉树中所有其它运算的基础 二叉树的遍历是指按照一定次序访问树中所有节点,并且每个节点的值仅被访问一次的过程 根据二叉树的递归定义,遍历一棵非空二叉树的问题可分解为三个子问题: 访问根节点 遍历左子树 遍历右子树。 前序遍历算法 堆排序 堆排序(Heap Sort)是一树形选择排序。 父节点值大于或等于其子节点值的,叫“大根堆”(a);父节点值小于或等于子节点值的,叫“小根堆” (b) 堆排序原理 堆排序需要两个过程,一是建立堆,二是堆顶与堆底(堆的最后一个元素)交换位置 所以堆排序有两个过程组成 建堆的过程; 调用建堆调整函数实现排序的过程 堆的基本操作 1.建堆:数组具有对应的树表示形式 一般情况下,树并不满足堆的条件;通过重新排列元素,可以建立一棵“堆化”的树 2.插入一个元素:新元素被加入到表中 随后树被更新以恢复堆次序 3.删除一个元素:删除总是发生在根(root)节点处 用表中的最后一个元素来填补空缺位置,结果树被更新以恢复堆的性质 堆排序过程 请对对关键字序列14,15,32,68,54,100,876,45,32,10建堆并排序输出 堆排序实现说明 为调试方便,将排序数据放在文件data.txt中,其中,第一个数据表示参与排序的数据个数(n),后面则跟随排序数据; 在main子图中,算法进行了建堆运算; creatheap子程序在建堆和排序输出两个过程中都会用到, 在第一轮循环中,用于建堆; 在heap_sort_output中,用于调整 堆排序流程 Main子图 堆排序流程 creatheap子程序 堆排序流程 heap_sort_output 子图 堆排序的应用场合 一般的快速排序,归并排序都是在排序结束后才能确定数据元素的全部序列; 堆排序则是每次输出一个堆顶元素,然后对堆进行再调整,保证堆顶元素总是当前剩下元素的最大或最小 欲在一个大量数据的文件中,如含有5000个元素的记录文件中选取前10个最大的元素,可采用堆排序 二叉搜索树 是一棵空树,或者是具有下列性质的二叉树: 1. 若它的左子树不空,则左子树上所有节点的值均小于它的根节点的值; 2. 若它的右子树不空,则右子树上所有节点的值均大于它的根节点的值; 3. 它的左、右子树也分别为二叉搜索树。 二叉搜索树的例子 二叉搜索树的优点 在二叉搜索树中进行查找的最糟时间复杂度为O(n),等于顺序查找; 但它支持动态查询(当搜索关键词没有在二叉搜索树中时,可以进行插入,这是该算法有别于大部分查找算法的特点) 有很多二叉搜索树改良算法可以使树高为logn,如AVL树等 是一种好的动态排序方法 构造二叉搜索树 使用随机数产生一个无序序列,用该序列构造二叉搜索树,并使用金字塔(下图)的形式输出该树,以及排序结果 二叉搜索树的构建说明 本例采用顺序形式保存二叉搜索树(BST)并输出排序结果,另外,需要考虑二叉搜索树的“金字塔”形式的输出(展示各种随机产生的二叉搜索树的特点) 为了简化算法,本例没有将动态插入的功能列入,有兴趣者可自行设计 二叉搜索树的主要模块(I) main子图控制算法的整体流程 init_first子图首次初始化使用随机数产生待排序数组a[];数组元素个数可以设定;对两个BST的指针数组l[]、r[]分别进行初始化 binary_sort子图进行BST的构建; 二叉搜索树 Main子图 二叉搜索树 init_first子图 二叉搜索树 binary_sor
您可能关注的文档
- 焊膏印刷-淮海工学院工程训练中心.PPT
- 煤矿作业场所职业危害防治规定-培训部.DOC
- 照相光谱增感染料及其组合在澳化银-影像科学与光化学.PDF
- 煤矿隐蔽火源探测技术.PPT
- 燃耗效应轴向可燃毒物可燃毒物.PPT
- 爱国卫生协管员培训资料-辽宁卫生计生委.DOC
- 物体将做匀速直线运动D..PPT
- 特定事业场と水质指导-旭川.PDF
- 特色班级建设班主任德育论坛交流汇总-上海晋元高级中学.DOC
- 特高压输变电系统开发与示范项目课题申报.DOC
- 浙江衢州市卫生健康委员会衢州市直公立医院高层次紧缺人才招聘11人笔试模拟试题参考答案详解.docx
- 浙江温州泰顺县退役军人事务局招聘编外工作人员笔试备考题库及参考答案详解一套.docx
- 江苏靖江市数据局公开招聘编外工作人员笔试模拟试题及参考答案详解.docx
- 广东茂名市公安局电白分局招聘警务辅助人员40人笔试模拟试题带答案详解.docx
- 江苏盐城市大丰区住房和城乡建设局招聘劳务派遣工作人员4人笔试模拟试题带答案详解.docx
- 浙江舟山岱山县东沙镇人民政府招聘笔试模拟试题及参考答案详解1套.docx
- 最高人民检察院直属事业单位2025年度公开招聘工作人员笔试模拟试题含答案详解.docx
- 浙江金华市委宣传部、中共金华市委网信办所属事业单位选调工作人员笔试备考题库及答案详解1套.docx
- 广东深圳市党建组织员招聘40人笔试模拟试题及答案详解1套.docx
- 江苏南京水利科学研究院招聘非在编工作人员4人笔试模拟试题及参考答案详解.docx
文档评论(0)