[2018年最新整理]实验一:二叉树的建立及其遍历.docVIP

  • 3
  • 0
  • 约2.92千字
  • 约 6页
  • 2018-04-15 发布于浙江
  • 举报

[2018年最新整理]实验一:二叉树的建立及其遍历.doc

[2018年最新整理]实验一:二叉树的建立及其遍历

实 验 报 告 课程名称: 数据结构实验 实验项目: 二叉树的建立及遍历 姓 名: 李翠超 专 业: 计算机科学与技术 班 级: 计算机16-6 学 号: 1609040307 计算机科学与技术学院 实验教学中心 2017 年11月 24日 实验项目名称: 二叉树的建立及遍历 一、实验目的 1.熟悉掌握课本二叉树相关理论知识 2.实践与理论相结合,以实践加深对理论理解并掌握二叉树的应用程序 3.学会二叉树的创建,遍历等其他基本操作的代码实现 二、实验内容 1.二叉树的创建代码实现 2.二叉树先序、中序、后序遍历代码实现 3.时间有余的同学尝试二叉树的其他各项功能的代码实现,如:测量二叉树的深度,宽度,结点数,叶子结点数及某个结点左右孩子 三、实验操作步骤 1.阅读实验内容和要求?????? 编写程序实现以下功能 (1)建立一棵二叉树 (2)先序、中序、后序遍历此二叉树 3.根据编译的结果,如果错误的及时找出并改正 四、实验结果分析 1.在键盘上输入一段字符串,建立一棵二叉树 例如输入:ABDG##H##E#I##C#FJ### 此二叉树的结构如下图: 2.输出先序、中序、后序遍历序列(采用递归遍历) 五、源代码 #include string.h #include stdio.h #include stdlib.h #define OK 1 #define ERROR 0 #define TRUE 1 #define FALSE 0 #define MAXSIZE 100 //存储空间初始分配量 typedef int Status; // Status是函数的类型,其值是函数结果状态代码,如OK等 typedef char TElemType; TElemType Nil= ; // 字符型以空格符为空 Status visit(TElemType e) { printf(%c ,e); return OK; } typedef struct BiTNode // 结点结构 { TElemType data; // 结点数据 struct BiTNode *lchild,*rchild; // 左右孩子指针 }BiTNode,*BiTree; // 构造空二叉树T Status InitBiTree(BiTree *T) { *T=NULL; return OK; } // 初始条件: 二叉树T存在。操作结果: 销毁二叉树T Status DestroyBiTree(BiTree *T) { if(*T) { if((*T)-lchild) // 有左孩子 DestroyBiTree((*T)-lchild); // 销毁左孩子子树 if((*T)-rchild) // 有右孩子 DestroyBiTree((*T)-rchild); // 销毁右孩子子树 free(*T); // 释放根结点 *T=NULL; // 空指针赋0 } } // 按前序输入二叉树中结点的值(一个字符) // #表示空树,构造二叉链表表示二叉树T。 Status CreateBiTree(BiTree *T) { TElemType ch; scanf(%c,ch); ch=str[index++]; if(ch==#) *T=NULL; else { *T=(BiTree)malloc(sizeof(BiTNode)); if(!*T) return ERROR; (*T)-data=ch; // 生成根结点 CreateBiTree((*T)-lchild); // 构造左子树 CreateBiTree((*T)-rchild); // 构造右子树 } } // 初始条件: 二叉树T存在 // 操作结果: 前序递归遍历T Status PreOrderTraverse(BiTree T) { if(T==NULL) return; printf(%c,T-data);// 显示结点数据,可以更改为其它对结点操作 PreOrderTraverse(T-lchild); // 再先序遍历左子树 PreOrderTraverse(T-rchild); // 最后先序遍历

您可能关注的文档

文档评论(0)

1亿VIP精品文档

相关文档