学院名称专业班级实验成绩学生姓名学号实验日期课程名称数据结构实验题目2树一、实验目的与要求熟悉树的各种表示方法和各种遍历方式,掌握有关算法的实现,了解树在计算机科学及其它工程技术中的应用
二、主要仪器设备Cfree三、实验内容和原理[问题描述]编写递归算法,计算二叉树中叶子结点的数目
[输入]一棵二叉树的结点若无子树,则可将其子树看作“
”,输入时,按照前序序列的顺序输入该结点的内容
对例题中的树,其输入序列ABD
[输出]若为空二叉树,则输出:THISISAEMPTYBINARYTREE
若二叉树不空,输出叶子结点的个数
[存储结构]采用二叉链表存储[算法的基本思想]采用递归方法建立和遍历二叉树
首先建立二叉树的根结点,然后建立其左右子树,直到空子树为止
遍历二叉树,若某一结点的左右孩子均为NULL,则该结点为叶子结点
[参考源程序]#include#includestructnode{charinfo;structnode*llink,*rlink;};typedefstructnodeNODE;NODE*create(){//构造二叉树charx;NODE*p;scanf("%c",&x);printf("%c",x);//打印出已输入的二叉树if(x
'){p=(NODE*)malloc(sizeof(NODE));p->info=x;p->llink=create();p->rlink=create();}elsep=NULL;returnp;}intrun(NODE*t){staticintcount=0;if(t){run(t->llink);//递归遍历左子树,直到叶子处run(t->rlink);//递归遍历右子树,直到叶子处if(t->llink==NULL&&t->rlink==NULL){count++;}}re