昆明理工大学信息工程与自动化学院学生实验报告(三)
(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的知识,虽然它有一定的难度,它是语言类的科目,就像英语,首先你得去背,背得多了自然就会了,但只要我们用心去做,一定可以做好的,心有多大舞台就有做大。我开始上机时,几乎一个简单的程序都写不出来,后来慢慢的坚持,过了几个星期,我编出一个程序来,感觉有点成就感,找到了自信,从此数据结构变得不再那么陌生了,首先从看别人程序到自己尝试着编,然后不断地调整,问同学,网上查,最后终于成功了,但是感觉自己的知识还是很少,需要多加的努力,更加的投入学习,只要用心,数据结构能学好的。