二叉树的二叉链表表示及实现实验报告.docVIP

二叉树的二叉链表表示及实现实验报告.doc

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
实验三 二叉树的二叉链表表示及实现 实验项目中文名称:二叉树的二叉链表表示及实现 实验项目英文名称:Definition and Implementation of Binary Tree 实验学时:2学时 一、实验目的 1、深入了解二叉树的特性,掌握二叉树的二叉链表表示及实现方法。 2、掌握二叉树的递归遍历算法。 二、实验内容 1、编写函数,创建一棵二叉树; 2、编写函数,用递归算法分别求二叉树的各种遍历序列; 3、编写函数,用非递归算法求二叉树的中序遍历序列。 4、编写函数,用非递归算法求二叉树的先序和后序遍历序列。(选做) 三、设计概要 1、核心数据结构 二叉树的链式存储结构表示 typedef struct BiTNode{ ElemType data; struct BiTNode *lchild, *rchild; } BiTNode; 结构示意图: 2,二叉树的链式存储算法实现 Status CreateBiTree(BiTree * Tp){ //创建一棵二叉树; char ch; scanf(%c,ch); getchar(); if(ch == ) Tp = NULL; else { Tp=(BiTree)malloc(sizeof(BiTNode)); Tp-data=ch; printf(输入%c的左子树:,ch); creatBitree(Tp-lchild); printf(输入%c的右子树:,ch); creatBitree(Tp-rchild); } } 程序框架结构与流程图 遍历:即将树的所有结点访问且仅访问一次。按照根节点位置的不同分为前序遍历,中序遍历,后序遍历。 前序遍历:根节点-左子树-右子树 中序遍历:左子树-根节点-右子树 后序遍历:左子树-右子树-根节点 (1)序遍历二叉树:若二叉树为空,则空操作;否则,先访问根节点-先序遍历左子树-先序遍历右子树。若二叉树为空,则空操作。 (2)中序遍历二叉树::若二叉树为空,则空操作;否则,中序遍历左子树-访问根节点-中序遍历右子树。若二叉树为空,则空操作。 (3)后序遍历二叉树::若二叉树为空,则空操作;否则,后序遍历左子树-后序遍历右子树-访问根节点。若二叉树为空,则空操作。 中序遍历流程图: 3、细节设计 程序分为:5大模块。二叉树的建立链式存储结构、前序遍历、中序遍历、后序遍历、主函数 二叉树的建立链式存储结构;首先typedef struct BiTNode:定义二叉树的链式存储结构,此处采用了每个结点中设置三个域, 即值域,*lchild:左指针域和rchild:右指针域。 二叉树的前序遍历;利用二叉链表作为存储结构的前序遍历:先访问根结点,再依次访问左右子树。 二叉树的中序遍历;利用二叉链表作为存储结构的中序遍历:先访问左子数,再访问根结点,最后访问右子树。 二叉树的后序遍历;利用二叉链表作为存储结构的前序遍历:先访问左右子树,再访问根结点。 主函数。 核心算法的设计:二叉树是n个节点的有穷个集合,它或者是空集(n=0),或者同时满足以下两个条件:(1):有且仅有一个称为根的节点; (2):其余节点分为两个互不相交的集合T1,T2,并且T1,T2都是二叉树,分别称为根的左子树和右子树。 四、程序源代码 #includestdio.h #includestdlib.h #define OK 1 #define ERROR 0 #define STACKINITSIZE 20 #define INCSIZE 10 typedef char ElemType; typedef struct BiTNode{ ElemType data; struct BiTNode *lchild, *rchild; } BiTNode; typedef BiTNode* BiTree; typedef int Status; typedef struct BiTNodeStack{ BiTree *sstack; int top, maxsize; } BiTNodeStack; void InitStack(BiTNodeStack * Sp){ Sp-sstack = (BiTree*)malloc(STACKINITSIZE * sizeof(BiTree)); if(!Sp-sstack){ exit(0); } Sp-maxsize = STACKINITSIZ

文档评论(0)

anma + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档