二叉树的建立及其遍历实验报告.docVIP

  • 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 后结构如下 实验总结 在这次编程之后,,自己对于二叉树的理解更深了一步,但还是有些地方没有弄清楚,比如说自己写了一个二叉树,但是输入进去后却不能构成一颗二叉树,这个问题到现在也没有解决。

文档评论(0)

1亿VIP精品文档

相关文档