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

学院名称专业班级实验成绩学生姓名学号实验日期课程名称数据结构实验题目2 树一、实验目的与要求

Cfree

三、实验内容和原理

[问题描述]

[输入]

”,输入时,按照前序序列的顺序输入该结点的内容。对例题中的树,其输入序列ABD..EH...CF.I..G..。

[输出]

[存储结构]

[算法的基本思想]

[参考源程序]#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++;

}

}

return count;

}

main()

{ NODE *T;

int left_number;

printf("请输入一棵树:\n" );

T=create();

printf("\n");

if(!T) printf("This is a empty binary tree.");

else{

left_number=run(T);

printf("\n这棵树共有 %d 个子叶. \n", left_number);

}

printf("\n");}

四、实验结果与分析

(2)习题1:注意叶子结点是指该结点既没有左孩子又没有右孩子,采用递归算法就很容易计算出其数目。

实验结果如图:

五、实验心得及体会

本次实验加深了我对树的各种遍历方法。尤其是先序遍历。在建立树的过程中更是采取了递归的方法。有的算法用递归表示要比用循环表示简洁精练[如二叉树的遍历代码更简洁清晰,可读性更好有的算法递归能实现循环不一定能实现递归的内部实现要消耗额外的空间和时间

数据结构用递归算法计算二叉树中叶子结点数目的思想c语言程序,编写递归算法计算二叉树中叶子结点的数目。.doc...相关推荐

  1. 用c语言程序编写天干地支,农历中天干地支的计算【C代码】

    [本程序在DEV C++ 4.9.9.2 下编译通过] 有关农历的东西有以下几篇文章: /* 函数名称:int GetChineseEra(int year,int flag) 函数功能: 返回某年对 ...

  2. c语言中数据存储在文件中,急求如何将下列C语言程序数据存储到文件中?

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 求如何改动才能将下列程序的存储输入或输出数据(或两者一起)到指定的文件(或运行时直接创立一个文件)如Arrangement中. #include int ...

  3. c语言把数据存放在文件中,急求如何将下列C语言程序数据存储到文件中?

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 求如何改动才能将下列程序的存储输入或输出数据(或两者一起)到指定的文件(或运行时直接创立一个文件)如Arrangement中. #include int ...

  4. c语言中保存到文件中,急求如何将下列C语言程序数据存储到文件中?

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 求如何改动才能将下列程序的存储输入或输出数据(或两者一起)到指定的文件(或运行时直接创立一个文件)如Arrangement中. #include int ...

  5. matlab编写正整数阶乘函数,用matlab语言编写程序:编写一个计算阶乘的函数,再编写一个脚本文件,通过键盘输入计算阶乘的n值....

    点击查看用matlab语言编写程序:编写一个计算阶乘的函数,再编写一个脚本文件,通过键盘输入计算阶乘的n值.具体信息 答:编写一个matlab文件,求1到n的阶乘之和.其代码编写的目的,就是学会自定义 ...

  6. c语言如何编译及调试,中如何编译运行及调试C语言程序.doc

    中如何编译运行及调试C语言程序 VC++6.0中如何编译运行调试C语言程序 1.启动VC++6.0 (如下图) 2.单个源文件的编译运行 例如下面的源代码 #include void main() { ...

  7. C语言计算e1 1/1! 1/2!,c语言程序填空 下面程序是计算sum=1+(1+1/2)+(1+1/2+1/3)+…(1+1/2...

    匿名用户 1级 2016-06-25 回答 <C语言>综合练习题一注意:以下"□"为空格,为回车一.单选题1.阅读以下程序,当输入数据的形式为:25,13,10,正确的 ...

  8. C需语言程序中的基本控制结构有哪些,C语言程序的基本控制结构1.ppt

    第三讲 C语言程序的 基本控制结构,参考书 <计算机程序设计基础>第三章 <C程序设计>第四章.第五章,本讲主要内容,结构化程序设计 if 语句 switch 语句 while ...

  9. 在c语言中 函数的作用是什么,C语言程序中函数的定义

    C语言程序中函数的定义 C语言的函数问题是困扰很多学者的问题的,c程序中什么是函数呢?下面啦小编为大家精心推荐的c程序中函数的定义,希望能够对您有所帮助. C语言读书笔记--函数 先来看看函数的一般形 ...

最新文章

  1. Poemscape|Beta阶段第九天
  2. Arduino可穿戴开发入门教程Windows平台下安装Arduino IDE
  3. 每日一皮:当我在重构时,总是有惊喜出现.......
  4. 利用C#进行Socket通信编程之二:一个实例
  5. VC 6.0 + SP6 下载 及 安装详细说明
  6. 第五节:Task构造函数之TaskCreationOptions枚举处理父子线程之间的关系。
  7. 机器学习(七)支持向量机svm中级篇
  8. java怎么从数据库中查询_java – 从数据库中检索的实体与查询中的情况相同
  9. 【Android小应用】强迫症头像生成器
  10. 服务器来料检测作用,元器件的来料检测需要检测哪些方面
  11. 职称计算机考试有哪些题,职称计算机考试题库(-套有答案).doc
  12. Rust游戏数据查询、Rust服务器清档时间表
  13. 【实战】python 小型商品销售统计系统
  14. GZH逸佳君:还在担心乱用字体会侵权吗?免费送你1800款可免费商用的精选字体
  15. 直播 | 如何在顶会夺冠:iWildCam 2020 冠军经验与技巧分享
  16. linux教程for语句,Bash 中的 For 循环详解
  17. linux系统装fluent没有界面,linux系统下安装fluent
  18. 医院设备管理系统-项目模板-毕业设计
  19. 2021年G2电站锅炉司炉考试报名及G2电站锅炉司炉试题及解析
  20. 送给未来的自己10句话

热门文章

  1. flash builder 环境配置
  2. 微信小程序志愿者服务的设计与实现
  3. 时间服务器未运行,解决Windows 7旗舰版系统Windows 时间服务未运行
  4. 算法分析之工作分配问题
  5. 配置java运行时环境时出现could not find java.dll
  6. Maya入门基础教学(1.基础快捷键)
  7. Matlab中坐标轴的刻度显示为10的次方
  8. matlab 求矩阵秩,求矩阵秩的两种方法及MATLAB的应用
  9. 项目进度管理的算法总结
  10. CAN FD总线详细介绍