admin 管理员组

文章数量: 1086019


2024年9月14日发(作者:windowsserver2008r2企业版)

数据结构实验报告

———

二叉树的建立及其遍历

一、 实验目的

1、 了解二叉树的建立的方法及其遍历的顺序,熟悉二叉树的三种遍历

2、 检验输入的数据是否可以构成一颗二叉树

二、 实验的描述和算法

1、 实验描述

二叉树的建立首先要建立一个二叉链表的结构体,包含根节点和左右子树。因为耳熟的

每一个左右子树又是一颗二叉树,所以可以用递归的方法来建立其左右子树。二叉树的

遍历是一种把二叉树的每一个节点访问完并输出的过程,遍历时根结点与左右孩子的输

出顺序构成了不同的遍历方法,这个过程需要按照不同的遍历的方法,先输出根结点还

是先输出左右孩子,可以用选择语句实现。

2、 算法

#include

#include

#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 {

}

return T; }

if(!(T=(BiTNode *)malloc(sizeof(BiTNode))))

exit(OVERFLOW);

T->data=e;

T->lchild=CreateBiTree(T->lchild);

T->rchild=CreateBiTree(T->rchild);

/************************前序遍历***********************/

char PreOrderTraverse(BiTree T,char (* Visit)(char e))

{

}

char Visit(char e)

{

}

main()

{

printf("%5c",e);

return OK;

if(T)

{

}

else return OK;

if(Visit(T->data))

if(PreOrderTraverse(T->lchild,Visit))

if(PreOrderTraverse(T->rchild,Visit)) return OK;

return ERROR;

}

printf("请输入一颗二叉树,按回车结束:n");

T=CreateBiTree(T);

printf("先序遍历的结果:");

PreOrderTraverse(T,Visit);

三、 调试分析

在调这个程序是并没有遇到很大的困难,就是在输入一颗二叉树时,遇到了一点麻烦。

输入时并不是随便乱输,输入的数据必须可以组成一颗二叉树才能才行。试了很久才弄

清这个问题,解决这个问题后,程序就基本上没有什么问题了。输入abc de g f 后

结构如下

四、 实验总结

在这次编程之后,,自己对于二叉树的理解更深了一步,但还是有些地方没有弄清楚,

比如说自己写了一个二叉树,但是输入进去后却不能构成一颗二叉树,这个问题到现在

也没有解决。


本文标签: 二叉树 遍历 建立