按层次遍历二叉树(5)
发布时间:2021-06-08
发布时间:2021-06-08
武汉理工大学课程设计
果应该是”CFEADB”,二叉树是:A为根节点,A左孩子是B,右孩子是C,B的左孩子为空,右孩子为D,C的左孩子为E,右孩子为空,E的左孩子为空,右孩子为F。根据以下程序运行结果(见图2)可知,程序正确运行
4 调试报告
在建立二叉树时,输入的格式一定要正确,没有孩子的要用空格表示,在测试用例中,F没有孩子,要用两个空格表示,如果输入“AB#D##CE#F”则没有输出结果。
5 经验和体会
本程序的建立和遍历二叉树的程序都比较简单,关键在于按要求打印二叉树。起初一直找不到合适的方法按题目要求打印二叉树,在和同学讨论了很久之后终于有了思路。打印的格式中,最上层的节点是右子树层次最高的,于是就可以用递归调用的方式实现。递归次数最高的就是输出最顶置的节点。在调试程序的时候也出现了问题,起初没有在意输入方式对程序运行结果的影响,导致程序无法运行,在检查了很久之后终于找到了问题的所在,对输入进行了改正,得到了正确的结果
6源程序清单及运行结果
6.1源程序清单
#include <stdio.h> #include <stdlib.h> #define max 100
typedef char ElemType; typedef struct BiTNode{ ElemType data;
struct BiTNode *lchild,*rchild; } BiTNode,*BinTree;
//建立二叉树
void CreateBinTree(BinTree &T){ char ch;
ch=getchar();
if(ch==' ') T=NULL; else{
if(!(T=(BiTNode *)malloc(sizeof(BiTNode)))) printf("%c" "结点建立失败!") ; T->data=ch;
CreateBinTree(T->lchild); CreateBinTree(T->rchild); } }
//遍历二叉树