实验三 二叉树的遍历
一、实验目的
1、熟悉二叉树的结点类型和二叉树的基本操作。
2、掌握二叉树的前序、中序和后序遍历的算法。
3、加深对二叉树的理解,逐步培养解决实际问题的编程能力。
二、实验环境
运行C或VC++的微机。
三、实验内容
1、依次输入元素值,以链表方式建立二叉树,并输出结点的值。
2、分别以前序、中序和后序遍历二叉树的方式输出结点内容。
四、设计思路
1. 对于这道题,我的设计思路是先做好各个分部函数,然后在主函数中进行顺序排列,以此完成实验要求
2.二叉树采用动态数组
3.二叉树运用9个函数,主要有主函数、构建空二叉树函数、建立二叉树函数、访问节点函数、销毁二叉树函数、先序函数、中序函数、后序函数、范例函数,关键在于访问节点
五、程序代码
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
#define OK 1
#define ERROR 0
typedef struct TNode//结构体定义
{
int data; //数据域
…… …… 余下全文
北 京 林 业 大 学
12学年—13学年第1学期数据结构实验报告书
专 业:自动化 班 级:11-1
姓 名: 宁友菊 学 号: 111044120
实验地点: B2机房 任课教师: 孟伟
…… …… 余下全文
一、【实验构思(Conceive)】(10%)
(本部分应包括:描述实验实现的基本思路,包括所用到的离散数学、工程数学、程序设计、算法等相关知识)
首先构造二叉树的存储结构,用data存储当前节点的值,分别用*lchild,*rchild表示该节点的左右孩子。然后应用BiTree Create函数,根据用户的输入构造二叉树,当输入#时表示没有孩子。采用递归的思想构造Preorder,Inorder,Postorder函数,分别实现二叉树的先序,中序,和后序的遍历。然后编写了Sumleaf,Depth函数,来求叶子节点的数目和二叉树的深度。
二、【实验设计(Design)】(20%)
(本部分应包括:抽象数据类型的功能规格说明、主程序模块、各子程序模块的伪码说明,主程序模块与各子程序模块间的调用关系)
二叉树的存储结构:typedef struct BiTNode
{
char data;
struct BiTNode *lchild,*rchild;
}BiTNode,*BiTree;
子程序模块:BiTree Create(BiTree T)
{
char ch;
…… …… 余下全文
实验报告:
二叉树
题目:
建立一棵二叉树,数据以字符串形式从键盘输入,在此二叉树上完成:
(1) 前序、中序、后序遍历
(2) 求出叶子数
(3) 求树高
(4) 左右子树交换,输出交换后的前序、中序遍历序列
分析:
建树:
输入的字符串序列为带有空节点的前序遍历序列(空节点用*表示)。
①:前序,中序,后序遍历:递归遍历
②:求叶子数:
当一个节点的左右孩子都是NULL时,此节点即为叶子节点。
…… …… 余下全文
课程 数据结构 _ 实验名称 二叉树实验
院系 电信学院 专业班级 计科10-4
姓名 学 号
一、实验构思
首先构造二叉树的存储结构,用data存储当前节点的值,分别用*lchild,*rchild表示该节点的左右孩子。然后应用BiTree Create函数,根据用户的输入构造二叉树,当输入#时表示没有孩子。采用递归的思想构造Preorder,Inorder,Postorder函数,分别实现二叉树的先序,中序,和后序的遍历。然后编写了Sumleaf,Depth函数,来求叶子节点的数目和二叉树的深度。
…… …… 余下全文