二叉树的创建与遍历

昆明理工大学信息工程与自动化学院学生实验报告(三)

(2011—2012学年 第1学期)

课程名称:数据结构 开课实验室:计算中心204 2011年 11月 6日

一、上机内容和目的

内容:二叉树的建立,遍历。

目的:了解二叉树的基本性质,三种遍历思想(前、中、后),掌握这写基本的方法,建立二叉链表,并作先序、中序、后序遍历。

二、上机实验环境: 计算中心204,操作系统 三、上机步骤:

打开计算机进入WindowsXP→在D盘建立自己的工作目录→进入Microsoft Visual C++ 6.0→文件/新建/工作区/C Source File /位置/命名→输入源程序→编译/组建→运行

四、程序设计思路及程序框图:

创建二叉树的基本思想:依次输入结点信息,若输入的结点不是虚结点,则建立一个新节点。若新节点是第一个节点,则令其为根节点;否则将新节点作为孩子链接到它的双

亲节点上。如此的重复输入,直至输入信息“#”时为止。二叉树是一个非线性结构,遍历时要先明确遍历的规则,先访问根结点还时先访问子树,然后先访问左子树还是先访问有右子树,这些要事先定好,因为采用不同的遍历规则会产生不同的结果,这个程序也采用的是先序遍历的规则进行建树的以及用递归的方式进行二叉树的遍历。

每个结点都是由数据域data、左指针域Lchild、右指针域Rchild组成,两个指针域分别指向该结点的左、右孩子,若某结点没有左孩子或者右孩子时,对应的指针域就为空。最后,还需要一个链表的头指针指向根结点。

先序遍历二叉树

执行操作:访问根结点、先序遍历左子树、先序遍历右子树。 中序遍历二叉树

执行操作:访问根结点、先序遍历左子树、先序遍历右子树。 后序遍历二叉树

执行操作:访问根结点、先序遍历左子树、先序遍历右子树。

简单流程图:

五、程序运行结果:

六、结果分析、心得体会

所谓遍历其实就是沿一条路径周游二叉树,每个节点访问一次并且只访问一次。

这个程序大体上实现了该算法的要求及功能,但是还是有很多的问题,很多细微的地方都没有考虑进去,操作过于简单,同时还存在其他的问题需要改进。

通过上机,我们学到了不少的知识,理论上想的和实际是不一样的,要多多的实践,时间才能出真知,数据结构是一门基础性的课程,需要把理论变为实践,我们一定要把基础打好,几乎每一样与计算机相关的考试都有数据结构,所以更应该好好学习数据结构。上机使我们温故了C的知识,虽然它有一定的难度,它是语言类的科目,就像英语,首先你得去背,背得多了自然就会了,但只要我们用心去做,一定可以做好的,心有多大舞台就有做大。我开始上机时,几乎一个简单的程序都写不出来,后来慢慢的坚持,过了几个星期,我编出一个程序来,感觉有点成就感,找到了自信,从此数据结构变得不再那么陌生了,首先从看别人程序到自己尝试着编,然后不断地调整,问同学,网上查,最后终于成功了,但是感觉自己的知识还是很少,需要多加的努力,更加的投入学习,只要用心,数据结构能学好的。

昆明理工大学信息工程与自动化学院学生实验报告(三)

(2011—2012学年 第1学期)

课程名称:数据结构 开课实验室:计算中心204 2011年 11月 6日

一、上机内容和目的

内容:二叉树的建立,遍历。

目的:了解二叉树的基本性质,三种遍历思想(前、中、后),掌握这写基本的方法,建立二叉链表,并作先序、中序、后序遍历。

二、上机实验环境: 计算中心204,操作系统 三、上机步骤:

打开计算机进入WindowsXP→在D盘建立自己的工作目录→进入Microsoft Visual C++ 6.0→文件/新建/工作区/C Source File /位置/命名→输入源程序→编译/组建→运行

四、程序设计思路及程序框图:

创建二叉树的基本思想:依次输入结点信息,若输入的结点不是虚结点,则建立一个新节点。若新节点是第一个节点,则令其为根节点;否则将新节点作为孩子链接到它的双

亲节点上。如此的重复输入,直至输入信息“#”时为止。二叉树是一个非线性结构,遍历时要先明确遍历的规则,先访问根结点还时先访问子树,然后先访问左子树还是先访问有右子树,这些要事先定好,因为采用不同的遍历规则会产生不同的结果,这个程序也采用的是先序遍历的规则进行建树的以及用递归的方式进行二叉树的遍历。

每个结点都是由数据域data、左指针域Lchild、右指针域Rchild组成,两个指针域分别指向该结点的左、右孩子,若某结点没有左孩子或者右孩子时,对应的指针域就为空。最后,还需要一个链表的头指针指向根结点。

先序遍历二叉树

执行操作:访问根结点、先序遍历左子树、先序遍历右子树。 中序遍历二叉树

执行操作:访问根结点、先序遍历左子树、先序遍历右子树。 后序遍历二叉树

执行操作:访问根结点、先序遍历左子树、先序遍历右子树。

简单流程图:

五、程序运行结果:

六、结果分析、心得体会

所谓遍历其实就是沿一条路径周游二叉树,每个节点访问一次并且只访问一次。

这个程序大体上实现了该算法的要求及功能,但是还是有很多的问题,很多细微的地方都没有考虑进去,操作过于简单,同时还存在其他的问题需要改进。

通过上机,我们学到了不少的知识,理论上想的和实际是不一样的,要多多的实践,时间才能出真知,数据结构是一门基础性的课程,需要把理论变为实践,我们一定要把基础打好,几乎每一样与计算机相关的考试都有数据结构,所以更应该好好学习数据结构。上机使我们温故了C的知识,虽然它有一定的难度,它是语言类的科目,就像英语,首先你得去背,背得多了自然就会了,但只要我们用心去做,一定可以做好的,心有多大舞台就有做大。我开始上机时,几乎一个简单的程序都写不出来,后来慢慢的坚持,过了几个星期,我编出一个程序来,感觉有点成就感,找到了自信,从此数据结构变得不再那么陌生了,首先从看别人程序到自己尝试着编,然后不断地调整,问同学,网上查,最后终于成功了,但是感觉自己的知识还是很少,需要多加的努力,更加的投入学习,只要用心,数据结构能学好的。


相关文章

  • 二叉树实验报告
  • <数据结构> 课程设计报告 专 业 计算机科学与技术 班 级 3班 姓 名 学 号 指导教师 起止时间 2012.12~2013.1 课程设计:二叉树 一.任务描述 二叉树的中序.前序.后序的递归.非递归遍历算法,应包含建树的实 ...查看


  • 二叉树的基本操作实现及其应用
  • 中原工学院软件学院 实验报告 实验项目名称 课程名称 学生姓名 学生学号 所在班级 学科专业 任课教师 完成日期 二叉树的基本操作实现及其应用 数据结构 一.实验目的 1.熟悉二叉树结点的结构和对二叉树的基本操作. 2.掌握对二叉树每一种操 ...查看


  • 创建二叉树并用前序遍历法遍历
  • 二叉树结构(设计性) 实验目的 1.熟练掌握二叉树的二叉链表存储结构. 2.掌握二叉树的非线性和递归性特点. 3.熟练掌握二叉树的递归遍历操作的实现方法,掌握二叉树的非递归遍历操作的实现. 4.掌握线索二叉树的定义和基本操作. 5.加深对二 ...查看


  • [精编完整版]双向循环链表的创建及相关操作的实现毕业论文说明书
  • (此文档为word 格式,下载后您可任意编辑修改!) 山东建筑大学计算机科学与技术学院 课程设计说明书 题 目: 双向链表的创建和操作的实现 树的创建及相关操作的实现 课 程: 数据结构与算法 院 (部): 计算机学院 专 业: 网络工程 ...查看


  • 完整的二叉树结构的实现及测试
  • 题目: 算法与数据结构课程设计 完整的二叉树结构的实现及测试 专 业 信息管理与信息系统 班 级 学 生 邹欣 学 号 3110302215 指导教师 鲍春波 章静 2012年 6月21日 – 27日 1. 系统分析 完整的二叉树结构的实现 ...查看


  • 利用先序遍历创建链式存储的二叉树
  • #include #include #define MAXSIZE 100 typedef struct bnode{ char data; struct bnode *lchild,*rchild; }Bnode,*Btree; type ...查看


  • 二叉树建立
  • 二叉树如何建立 先序递归创建二叉树,并对其进行 先序.中序.后序遍历 #include // malloc()等 #include // 标准输入输出头文件,包括EOF(=^Z或F6),NULL等 #include // atoi(),ex ...查看


  • 二叉树的遍历算法
  • 二叉树的前序.后序的递归.非递归遍历算法 摘 要 本课程设计主要解决树的前序.后序的递归.非递归遍历算法,层次序的非递归遍历算法的实现.在课程设计中,系统开发平台为Windows 2000,程序设计设计语言采用Visual C++,程序运行 ...查看


  • 中序遍历的非递归算法
  • //中序遍历的非递归算法 #include using namespace std; //二叉树的二叉链表存储表示 typedef struct BiNode { char data; //结点数据域 struct BiNode *lchi ...查看


热门内容