#include "stdio.h"
#include "malloc.h"

typedef struct BiTNode{
    char data;   /*结点的数据域*/
    struct BiTNode *lchild , *rchild;  /*指向左孩子和右孩子*/
} BiTNode , *BiTree;

/*创建一棵二叉树*/
void CreatBiTree(BiTree *T)
{
    char c;
    scanf("%c",&c);
    if(c == ' ') *T = NULL;
    else{
       *T = (BiTNode * )malloc(sizeof(BiTNode));  /*创建根结点*/
        (*T)->data = c;    /*向根结点中输入数据*/
        CreatBiTree(&((*T)->lchild));  /*递归地创建左子树*/
        CreatBiTree(&((*T)->rchild));  /*递归地创建右子树*/
    }
}

int getLeavesConut(BiTree T) {
    int leftLeavesCount;
    int rightLeavesCount;
    if (T == NULL) {
        return 0;
    }else if (T->lchild == NULL && T->rchild == NULL) {
        return 1;
    }else {
        leftLeavesCount = getLeavesConut(T->lchild);
        rightLeavesCount = getLeavesConut(T->rchild);
        return leftLeavesCount + rightLeavesCount;
    }
}
main()
{
   BiTree T = NULL;                /*初始化T */
   int count = 0;
   printf("Input some characters to create a binary tree \n");
   CreatBiTree(&T);                /*创建一棵二叉树*/
  count =  getLeavesConut (T);    /*计算二叉树中叶子结点的个数 */
   printf("The number of leaves of BTree are %d\n",count);
   getchar();
   getchar();
}

递归计算二叉树的叶子节点个数相关推荐

  1. c++用递归计算二叉树的叶子节点的个数

    c++用递归计算二叉树的叶子节点的个数 二叉树的叶子节点是左右节点均为NULL的节点,这也判断递归的条件,直接上代码 int num_tree(Btree *tree,int&count){i ...

  2. 分别采用递归和非递归方式编写两个函数,求一棵二叉树中叶子节点个数

    分别采用递归和非递归方式编写两个函数,求一棵二叉树中叶子节点个数 #include #include #define MAXSIZE 50 typedef char datatype; typedef ...

  3. 统计二叉树的叶子节点个数

    #include <iostream> #include <queue>using namespace std;typedef struct node {char data;s ...

  4. c#二叉树 取叶子节点个数_数据结构第四章:树与二叉树(二叉树的概念、性质、特殊二叉树)...

    第四章:树与二叉树(二叉树的逻辑结构) 1.二叉树 二叉树是树结构的一种,故二叉树也是逻辑结构. 二叉树:二叉树是n(n≥0)个结点的有限集合. · 1)n=0时,二叉树为空; · 2)n>0时 ...

  5. c#二叉树 取叶子节点个数_二叉树的最小深度+完全二叉树的节点个数

    二叉树的最小深度 题目:给定一个二叉树,找出其最小深度. 最小深度是从根节点到最近叶子节点的最短路径上的节点数量. 说明:叶子节点是指没有子节点的节点. 示例 1: 输入:root = [3,9,20 ...

  6. c#二叉树 取叶子节点个数_两种类似但是原理不同的算法求二叉树的所有叶子节点和...

    技术提高是一个循序渐进的过程,所以我讲的leetcode算法题从最简单的level开始写的,然后到中级难度,最后到hard难度全部完. 目前我选择C语言,Python和Java作为实现语言,因为这三种 ...

  7. 给定一棵二叉树,计算该二叉树的深度、总节点个数和叶子节点个数。

    // // binary_tree.cpp // BinaryTreeApp // // Created by ljpc on 2018/5/3. // Copyright © 2018年 ljpc. ...

  8. 二叉树(C++):创建,前中后序遍历(递归+非递归),获取叶子节点个数,获取树的高度

    文章目录 前言 创建二叉树 先序遍历 中序遍历 后序遍历 获取叶子节点个数 获取树的高度 测试代码 前言 现有如下二叉树: 关于二叉树的相关操作,我们能够发现二叉树从根节点到子节点,以及每个中间节点基 ...

  9. 【数据结构】二叉树的节点总个数、叶子节点个数、第K层节点个数、二叉树的深度

    目录 1.结点总个数 1.1 局部静态变量法 思维 代码 不足之处 2.传指针法 程序代码 3.递归法 思想 程序代码 详细过程 2.叶子节点个数 思想 程序代码 3.第K层节点个数 思想 程序代码 ...

  10. java 获取叶子节点个数_数据结构编程: 统计二叉树中叶子结点的个数。

    展开全部 叶子节点:没有孩子节点的节点 也就是说,当我们明白了叶子节点的定义62616964757a686964616fe59b9ee7ad9431333363376531后,只需要遍历一遍二叉树,把 ...

最新文章

  1. 读后感与机翻《基于理论的因果迁移:结合实例级的归纳和抽象级的结构学习》
  2. 找出最具竞争力的子序列_力扣300——最长上升子序列
  3. 中国汽车产业数字化服务商研究报告及TOP50榜单
  4. python-模块-pymysql操作数据库
  5. WebService的两种用户验证方式
  6. Android开发技术周报 Issue#17
  7. 静态成员变量.xml
  8. dram和nand哪个难生产_终于有人说清楚了什么是DRAM、什么是NAND Flash
  9. VS2010 正式版 破解方法详解
  10. 游戏设计的100个原理(11-15)
  11. SQL Server~T-SQL编程基础
  12. xp计算机硬盘东西不显示,XP系统中认不到移动硬盘怎么办?XP系统无法识别移动硬盘解决方法...
  13. 领域驱动设计整理——概念架构
  14. update在python中是什么意思_update()与save()有什么区别
  15. 苍穹变服务器维护中,苍穹变7月1日更新维护公告
  16. 全局地址池 与接口地址池
  17. 【Windows网络调试笔记】如何打开Windows(Win10为例)的telnet客户端?
  18. BIOS密码的去除与破解
  19. 史上最全八大排序讲解时间复杂度篇(0基础都能看懂)
  20. 航天信息计算机设备如何入账,航天信息发票全额抵扣如何做账?

热门文章

  1. 【转】 C#泛型集合—Dictionary使用技巧
  2. Centos6 安装 Redis 和集群配置
  3. Reflector7.5.2.1的Bug
  4. 设置dedecms为动态页面,设置dedecms为静态页面,首页动态,列表动态和文章动态
  5. 设置导出目录oracle11g,Oracle11g不同目录的冷备份解决方案
  6. php指令,php命令行下的常用命令
  7. 苹果屏幕旋转怎么设置_iPhone12屏幕供应商是谁 苹果12屏幕怎么查看是哪家
  8. 最全计算机基础知识竞赛试题及答案,计算机基础知识竞赛试题.doc
  9. 浏览器打印设置横向打印_震旦打印机如何设置认证打印
  10. 【CF1324E】Sleeping Schedule(dp)