编写递归算法,计算二叉树中叶子结点的数目。

编写递归算法,计算二叉树中叶子结点的数目。


2024年4月30日发(作者:)

学院名称

学生姓名

课程名称

数据结构

专业班级

学号

实验题目

2 树

实验成绩

实验日期

一、实验目的与要求

熟悉树的各种表示方法和各种遍历方式,掌握有关算法的实现,了解树在计算机科学及其它工程技术中的

应用。

二、主要仪器设备

Cfree

三、实验内容和原理

[问题描述]

编写递归算法,计算二叉树中叶子结点的数目。

[输入]

一棵二叉树的结点若无子树,则可将其子树看作“.”,输入时,按照前序序列的顺序输入该结点的内容。

对例题中的树,其输入序列ABD..EH...CF.I..G..。

A

B

C

D

E

F

G

H

I

[输出]

若为空二叉树,则输出:THIS IS A EMPTY BINARY TREE。若二叉树不空,输出叶子结点的个数。

[存储结构]

采用二叉链表存储

[算法的基本思想]

采用递归方法建立和遍历二叉树。首先建立二叉树的根结点,然后建立其左右子树,直到空子树为止。遍

历二叉树,若某一结点的左右孩子均为NULL,则该结点为叶子结点。

[参考源程序]

#include

#include

struct node{

char info;

struct node *llink, *rlink;

};

typedef struct node NODE;

NODE *create(){ //构造二叉树

char x;

NODE *p;

scanf("%c", &x);

printf("%c", x); //打印出已输入的二叉树

if(x!='.'){

p=(NODE *)malloc(sizeof(NODE));

p->info=x;

p->llink=create();

p->rlink=create();

}

else p=NULL;

return p;

}

int run(NODE *t){

static int count=0;

if(t){

run(t->llink); //递归遍历左子树,直到叶子处

run(t->rlink); //递归遍历右子树,直到叶子处

if(t->llink ==NULL && t->rlink == NULL) {

count++;


发布者:admin,转转请注明出处:http://www.yc00.com/news/1714421621a2443281.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信