- 18
- 0
- 约1.37千字
- 约 3页
- 2020-08-06 发布于河北
- 举报
数据结构实验报告
———二叉树的建立及其遍历
实验目的
了解二叉树的建立的方法及其遍历的顺序,熟悉二叉树的三种遍历
检验输入的数据是否可以构成一颗二叉树
实验的描述和算法
实验描述
二叉树的建立首先要建立一个二叉链表的结构体,包含根节点和左右子树。因为耳熟的每一个左右子树又是一颗二叉树,所以可以用递归的方法来建立其左右子树。二叉树的遍历是一种把二叉树的每一个节点访问完并输出的过程,遍历时根结点与左右孩子的输出顺序构成了不同的遍历方法,这个过程需要按照不同的遍历的方法,先输出根结点还是先输出左右孩子,可以用选择语句实现。
算法
#include stdio.h
#include stdlib.h
#define OVERFLOW 0
#define OK 1
#define ERROR 0
typedef struct BiTNode {
char data;
struct BiTNode *lchild,*rchild;
}BiTNode,*BiTree;
BiTree CreateBiTree(BiTree T)
{
scanf(%c,e);
if(e== ) T=NULL;
else {
if(!(T=(BiTNode *)malloc(sizeof(BiTNode))))
exit(OVERFLOW);
T-data=e;
T-lchild=CreateBiTree(T-lchild);
T-rchild=CreateBiTree(T-rchild);
}
return T; }
/************************前序遍历***********************/
char PreOrderTraverse(BiTree T,char (* Visit)(char e))
{
if(T)
{
if(Visit(T-data))
if(PreOrderTraverse(T-lchild,Visit))
if(PreOrderTraverse(T-rchild,Visit)) return OK;
return ERROR;
}
else return OK;
}
char Visit(char e)
{
printf(%5c,e);
return OK;
}
main()
{
printf(请输入一颗二叉树,按回车结束:\n);
T=CreateBiTree(T);
printf(先序遍历的结果:);
PreOrderTraverse(T,Visit);
}
调试分析
在调这个程序是并没有遇到很大的困难,就是在输入一颗二叉树时,遇到了一点麻烦。输入时并不是随便乱输,输入的数据必须可以组成一颗二叉树才能才行。试了很久才弄清这个问题,解决这个问题后,程序就基本上没有什么问题了。输入abc de g f 后结构如下
实验总结
在这次编程之后,,自己对于二叉树的理解更深了一步,但还是有些地方没有弄清楚,比如说自己写了一个二叉树,但是输入进去后却不能构成一颗二叉树,这个问题到现在也没有解决。
您可能关注的文档
最近下载
- 时间在哪里(单元测试)2025-2026学年二年级数学下册人教版(含答案).docx VIP
- ISO22163-2023内审员培训课-学员.pdf VIP
- 驾驶员安全教育课件.pptx VIP
- 2025年黑龙江职业学院单独招生语文测试试卷.docx
- 2025年北京市高考生物真题卷(含答案与解析).pdf VIP
- 第一单元《时间在哪里》(单元测试)-2025-2026学年二年级下册数学人教版.docx VIP
- 课件 驾驶员安全教育.ppt VIP
- 3.2+公民基本义务+课件-2025-2026学年统编版道德与法治八年级下册.pptx VIP
- ISO-22163-2023标准中英文版.docx VIP
- 疼痛的中医课件.pptx VIP
原创力文档

文档评论(0)