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

/*
编写递归算法,计算二叉树叶子结点的数目。
*/#include "stdio.h"//包含 getchar() scanf() printf()
#include "malloc.h"//malloc()动态申请空间 函数
//二叉树 结点
struct node{char data;struct node *lchild,*rchild;
}bnode;
typedef struct node * blink;//计算二叉树叶子结点的数目
//先序 建立 二叉数
blink create_binary();
//释放二叉树
void FreeTree(blink T);//找叶子结点个数//递归,先序遍历 树 同时统计叶子结点
int count = 0;//叶子结点个数
void preorder(blink a)
{//递归出口 if(a == NULL){return;}//先序遍历树 printf("%c ",a->data);preorder(a->lchild);preorder(a->rchild);//统计叶子 结点 if(a->lchild == NULL && a->rchild == NULL){count ++;}return;
}//测试函数
int main()
{blink T;//构建二叉树 T = create_binary();//先序遍历 树 同时用count统计叶子结点(count定义成全局变量)preorder(T);printf("\n");//打印count叶子结点的数量printf("The number of leaf nodes is %d \n",count);//释放二叉树 FreeTree(T);return 0;
}
//先序 建立 二叉数
blink create_binary()
{blink bt;char ch;ch = getchar();if (ch == '#'){bt = NULL;}else{bt = (blink)malloc(sizeof(bnode));bt->data = ch;bt->lchild = NULL;bt->rchild = NULL;bt->lchild = create_binary();bt->rchild = create_binary();}/*   输入abc##d##ef##g## ab       ec     d   f    g*/return bt;
}
//释放二叉树
void FreeTree(blink T)
{if(T){FreeTree(T->lchild);            //递归释放其左子树 FreeTree(T->rchild);           //递归释放其右子树 free(T);                      //释放根节点 T = NULL;                     //释放指向根节点的指针 }return;          }

编写递归算法,计算二叉树叶子结点的数目。相关推荐

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

    编写递归算法计算二叉树中叶子结点的数目. 学院名称专业班级实验成绩学生姓名学号实验日期课程名称数据结构实验题目2 树一.实验目的与要求 Cfree 三.实验内容和原理 [问题描述] [输入] &quo ...

  2. 西工大NOJ数据结构理论——016.计算二叉树叶子结点数目(耿6.14)

    一.初级思路 拿到题之后的好习惯--先在纸上写思路: 1.构建二叉树: char* BinTreeBuilding(PBinTreeNode ptr_node,char *ptr_str){//创建二 ...

  3. 计算二叉树叶子节点的数目

    版权声明:本文为博主原创文章,转载请注明出处. https://blog.csdn.net/twilight_karl/article/details/53468024 二叉树采用链式储存结构,设计算 ...

  4. c语言求树上节点的双亲,用非递归算法求二叉树叶子结点的c语言代码怎样写?...

    递归算法:是一种直接或者间接地调用自身的算法.在计算机编写程序中,递归算法对解决一大类问题是十分有效的,它往往使算法的描述简洁而且易于理解. 递归算法的特点 递归过程一般通过函数或子过程来实现. 递归 ...

  5. 二叉树叶子结点,非叶子节点以及深度的计算

    二叉树叶子结点的计算 //统计叶子结点的数目 int LeafNum(BiTree T) {if (!T) {return 0;} else if (!T->lchild && ...

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

    编写递归算法,计算二叉树中叶子结点的数目 1 #include<iostream> using namespace std;typedef struct TNode//二叉树结构 {cha ...

  7. Java创建二叉树,并使用递归算法求二叉树中叶子结点的数目

    问题描述 创建二叉树,并使用递归算法求二叉树中叶子结点的数目 输入 输入一个用'.'来标明空子树的先根遍历序列,如ABD-EH-CF.I-G- 输出 叶子结点的个数 存储结构 二叉树 算法的基本思想 ...

  8. 数据结构----二叉树叶子结点到根节点的高度计算

    数据结构----二叉树叶子结点到根节点的高度计算 代码: #include<stdio.h> #include<stdlib.h> typedef struct bstTree ...

  9. C语言实现二叉树叶子结点数目

    C语言实现二叉树叶子结点数目 要实现的功能如下 完整源代码实现如下 要实现的功能如下 求二叉树,所有的叶子总数,包括左叶子,右叶子. 完整源代码实现如下 #include<stdio.h> ...

  10. c语言实现求二叉树叶子结点个数

    通过递归求解二叉树叶子结点个数,关键在于递归结束条件的设置. main.c #include<stdio.h>//定义结点类型 typedef struct BINARYNODE {cha ...

最新文章

  1. JQuery dataTable 扩展+Ajax Post,Get一些基本操作(一)
  2. socket阻塞导致拿不到信息
  3. 深度学习中学习率(lr:learn rate)和batchsize如何影响模型性能?
  4. Netty 支持的功能与特性
  5. win7 下的open live writer代码插件
  6. java并发之synchronized实现原理及其优化
  7. YJX_Driver_031_再谈SSDT_HOOK驱动保护原理
  8. 灰度实战(四):Apollo配置中心(4)
  9. mysql enclosed by_MySQL导入格式化数据
  10. 程序员接私活的几个平台
  11. 基于SSM的停车位收费系统
  12. 贴片电阻系列命名标准
  13. ubuntu22.04设置静态ip地址
  14. PyQt5中QComboBox选中文本居中显示
  15. 纯前端实现—点一个小圆圈变四个动画效果
  16. 来给罗永浩和王自如打个分(上)
  17. Lua 实现复数计算器
  18. MOOS-ivp 实验四 MOOS编程入门(2)MOOS类讲解
  19. 总后台顶部实现站内信功能
  20. CSDN学院免费课程领取教程

热门文章

  1. 连载31:软件体系设计新方向:数学抽象、设计模式、系统架构与方案设计(简化版)(袁晓河著)...
  2. 大米云主机nodejs服务部署
  3. 安全防范趋势、信息安全管理、隐私保护
  4. 友声条码秤对接软件_友声条码秤调试教程
  5. cfa equity
  6. 2021年CFA全套资料无偿分享|备考经验|备考计划
  7. 在职工程师如何在乾颐堂通过HCIE认证考试一瞥(王IE战报)
  8. 为虚幻4安装VS2019
  9. Resnet 18网络模型
  10. 音视频播放器—初始化操作