11、树的实验1.docVIP

  1. 1、本文档共3页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
实验十一 二叉树实验 一、实验目的、 掌握二叉树的顺序存储结构、链式存储结构及其基本操作。 掌握用VC工具上机调试二叉树的存储方式和基本操作。 二、实验学时 2学时 三、实验类型 验证型 四、实验内容 二叉树的顺序存储结构,链式存储结构及基本操作算法实现。 五、实验原理 二叉树概述 树形结构是一类重要的非线性数据结构,树中结点之间具有明确的层次关系,形式上类似于真正的树。树形结构是现实生活中大量存在的实际问题的抽象,故在计算机应用领域中树形结构被广泛的使用,在树形结构中以二叉树最为重要。 二叉树通常有两种存储方式:顺序存储和链式存储(二叉链表),顺序存储方式以完全二叉树中对应位置上结点编号为存储位置,故有时会产生很大的浪费,采用链式存储结构可以解决空间浪费问题,可为每个结点设置三个域:数据域、左、右指针域。 遍历是二叉树最为重要的运算之一,是指沿着某条搜索路径,依次对树中的每个结点访问一次且仅访问一次。由于二叉树的定义是递归的,一颗非空的二叉树是由根结点、左子树、右子树三个基本部分组成,故而这三个部分访问的先后顺序,可分为前序遍历、中序遍历和后序遍历三种最基本遍历策略。遍历的本质是以一定的规则将二叉树中的结点排成一个线性序列,也称为非线性结构的线性化。 二叉树采用二叉链表作为存储结构时,由于每个结点只有指向其左右孩子结点的指针域,所以从任一结点出发只能找到该结点的左、右孩子,无法直接找到该结点在某种遍历序列中的前驱与后继结点,若在每个结点中增加两个指针域存放遍历时得到的前驱和后继信息,将大大降低存储空间的利用率。而另一方面,n个结点的二叉链表中必定存在n+1个空指针域,因此可以利用这些空指针域存放指向结点在某种遍历次序下的前驱和后继结点的指针,相应的二叉树称为线索二叉树。 2、二叉树基本算法 (1) CreateBiTree(BiTree *T); 以先序遍历次序创建二叉树T。 (2) PreDisplay(BiTree S); 先序遍历二叉树T。 (3) InDisplay(BiTree S); 中序遍历二叉树T。 (4) LnDisplay(BiTree S); 后序遍历二叉树T。 (5) Display1(BiTree S); 广义表表示法输出二叉树T。 (6) Nodes(BiTree S); 求二叉树T的所有结点数。 (7) leafNodes(BiTree S); 求二叉树T的叶子结点数。 (8) TreeEmpty(BiTree S); 判断二叉树T是否为空。 (9) DeepthBitee(BiTree S) ; 求二叉树T的深度。 (10) FindNode(BiTree t,char e) ; 求二叉树T中以e为根结点值的根结点。 (11) lchildNode(BiTree t); 求二叉树T的左子树根结点。 (12) rchildNode(BiTree t); 求二叉树T的右子树根结点。 3、模块层次图 要求画出二叉树的程序模块层次图。如图所示 图19 二叉树链式结构程序模块层次图 其中A 表示CreateBiTree(BiTree *T),B表示PreDisplay(BiTree S),C表示InDisplay(BiTree S),D表示LnDisplay(BiTree S),E表示Display1(BiTree S),F表示Nodes(BiTree S),G表示leafNodes(BiTree S),H表示TreeEmpty(BiTree S),I表示DeepthBitee(BiTree S),J表示FindNode(BiTree t,char e),K表示lchildNode(BiTree t),L表示rchildNode(BiTree t),M表示Display2(BiTree t)。 六、实验步骤及要求 (一) 用VC语言编程实现二叉树的基本操作算法。 按先序遍历的次序创建二叉树T; 输出此二叉树T的先序序列; 输出此二叉树T的中序序列; 输出此二叉树T的后序序列; 将二叉树T以广义表形式输出; 判断此二叉树T是否为空树; 输出二叉树T的结点数; 输出二叉树T的叶子结点数; 输出二叉树T的深度; 输出二叉树T的左子树根; 输出二叉树T的右子树根; 程序运行结束。 七、运行结果 图24 二叉树链式存储结构的基本算法运行图 八、实验报告要求 根据对二叉树结构特点的理解,如何编写二叉树的基本操作; 调试程序过程中遇到的问题及解决方案; 本次实验的结论与体会。

您可能关注的文档

文档评论(0)

精华文档888 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档