- 1、本文档共15页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数据结构说明书数据构说明书
目 录
引言 1
一、设计要求 2
二、算法原理及思想 2
1、遍历概念 2
2、遍历方案 2
2.1 遍历方案 2
2.2三种遍历的命名 2
3、二叉树的链式存储结构 3
3.1、结点的结构 3
3.2、结点的类型说明 3
3.3、二叉链表 3
4、二叉树的非递归遍历(用栈实现) 4
4.1先序非递归算法 4
4.2中序非递归算法 6
4.3后序非递归算法 7
三、遍历过程 8
四、程序测试 9
五、实验总结 9
六、参考文献 9
附录:源代码 9
1 选题背景
《数据结构》在计算机科学中是一门综合性的专业基础课.数据结构的研究不仅涉及到计算机的硬件(特别是编码理论、存储装置和存取方法等)的研究范围,而且和计算机软件的研究有着更密切的关系,无论是编译程序还是操作系统,都涉及到数据元素在存储器中的分配问题.在研究信息检索时也必须考虑如何组织数据,以便查找和存取数据元素更为方面.因此,可以认为数据结构是介于数学、计算机硬件和计算机软件三者之间的一门核心课程.在计算机科学中,数据结构不仅是一般程序设计(特别是非数值计算的程序设计)的基础,而且是设计和实现编译程序、操作系统、数据库系统及其它系统程序和大型应用程序的重要基础。
树是一种重要的非线性数据结构,直观地看,它是数据元素(在树中称为结点)按分支关系组织起来的结构,很象自然界中的树那样。树结构在客观世界中广泛存在,如人类社会的族谱和各种社会组织机构都可用树形象表示。树在计算机领域中也得到广泛应用,如在编译源程序如下时,可用树表示源源程序如下的语法结构。又如在数据库系统中,树型结构也是信息的重要组织形式之一。一切具有层次关系的问题都可用树来描述。满二叉树,完全二叉树,排序二叉树。
二叉树是树形结构的一个重要类型。许多实际问题抽象出来的数据结构往往是二叉树的形式,即使是一般的树也能简单地转换为二叉树,而且二叉树的存储结构及其算法都较为简单,因此二叉树显得特别重要。此程序主要实现二叉树的遍历并且是基于栈的非递归遍历方法。
2 方案论证
2.1遍历概念
所谓遍历(Traversal)是指沿着某条搜索路线,依次对树中每个结点均做一次且仅做一次访问。访问结点所做的操作依赖于具体的应用问题。??? 遍历是二叉树上最重要的运算之一,是二叉树上进行其它运算之基础。
2.2遍历方案
2.2.1 遍历方案
???从二叉树的递归定义可知,一棵非空的二叉树由根结点及左、右子树这三个基本部分组成。因此,在任一给定结点上,可以按某种次序执行三个操作:??? (1)访问结点本身(N),??? (2)遍历该结点的左子树(L),??? (3)遍历该结点的右子树(R)。以上三种操作有六种执行次序:??? NLR、LNR、LRN、NRL、RNL、RLN。??
2.2.2三种遍历的命名
??? 根据访问结点操作发生位置命名: ① NLR:前序遍历(亦称(PreOrderTree先序遍历))???????? ——访问结点的操作发生在遍历其左右子树之前。 ② LNR:中序遍历(InOrderTree)??????? ——访问结点的操作发生在遍历其左右子树之中(间)。? ③ LRN:后序遍历(PostOrderTree l)??????? ——访问结点的操作发生在遍历其左右子树之后。
2.3二叉树的链式存储结构
2.3.1结点的结构
二叉树的每个结点最多有两个孩子。用链接方式存储二叉树时,每个结点除了存储结点本身的数据外,还应设置两个指针域lchild和rchild,分别指向该结点的左孩子和右孩子。结点的结构为:
图1 链式存储结点结构
2.3.2 结点的类型说明
typedef struct BiNode
{
DataType data; //数据域
struct BiNode *LChild; //左孩子
struct BiNode *RChild; //右孩子
}BiTNode,*BiTree;
2.3.3 二叉链表
在一棵二叉树中,所有类型为BinTNode的结点,再加上一个指向开始结点(即根结点)的BinTree型头指针(即根指针)root,就构成了二叉树的链式存储结构,并将其称为二叉链表。如图2所示:
图2 二叉链表存储的二叉树
注意:
① 一个二叉链表由根指针root惟一确定。若二叉树为空,则root=NULL;若结点的某个孩子不存在,则相应的指针为空。
???② 具有n个结点的二叉链表中,共有2n个指针域。其中只有n-1个用来指示结点的左、右孩子,其余的n+1个指针域为空。
//建立二叉树的二叉链表存贮结构
void CreateBiTree(
您可能关注的文档
- 教案第五单元 法教案第五单元 除法.doc
- 教案: 呼吸衰竭病的护理教案: 呼吸衰竭病人的护理.doc
- 教案首页001教案页001.doc
- 教案:说声谢谢教案说声谢谢.doc
- 教案:成本管理教案成本管理.doc
- 教研室计划总结教研计划总结.doc
- 教研室课题研究申报教研室课题研究申报表.doc
- 教研工作计划 2教工作计划 2.doc
- 教研引领 课堂践 教学并进教研引领 课堂践行 教学并进.doc
- 教研教改论文题目教教改论文题目.doc
- 2025年泸州医疗器械职业学院单招职业技能测试近5年真题考点含答案解析.docx
- 2025年泸州医疗器械职业学院单招语文2019-2024历年真题考点试卷含答案解析.docx
- 2025年泸州职业技术学院单招英语2014-2024历年真题考点试卷摘选含答案解析.docx
- 2025年泉州纺织服装职业学院单招职业技能测试近5年真题考点含答案解析.docx
- 2025年泉州经贸职业技术学院单招语文2019-2024历年真题考点试卷含答案解析.docx
- 2024重庆市铁路(集团)有限公司璧铜线运营公司招聘79人笔试参考题库附带答案详解.pdf
- 2025年泉州轻工职业学院单招职业适应性测试历年(2019-2024年)真题考点试卷含答案解析.docx
- 2025年泉州纺织服装职业学院单招(数学)历年真题考点含答案解析.docx
- 2024重庆广电数字传媒股份有限公司招聘3人笔试参考题库附带答案详解.pdf
- 2025年泉州轻工职业学院单招英语2014-2024历年真题考点试卷摘选含答案解析.docx
文档评论(0)