统计C语言二叉树中叶子结点个数

 更新时间:2022年02月11日 08:55:07   作者:MyDreamingCode  
这篇文章主要介绍的是统计C语言二叉树中叶子结点个数,文章以C语言二叉树中叶子结点为基础分享一个简单小栗子讲解,具有一定的知识参考价值,需要的小伙伴可以参考一下

树是一种非线性的数据结构,它是由n(n>=0)个有限结点组成一个具有层次关系的集合。把它叫做树是因
为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的,下面我们就用简单小栗子来简单说明关于统计C语言二叉树中叶子结点个数的方法吧

简单小栗子:

#include<stdio.h>
#include<stdlib.h>
 
typedef char ElemType;
typedef struct BTNode
{
    ElemType data;
    struct BTNode *left;
    struct BTNode *right;
}BTNode,*BiTree;
 
//创建二叉树
void createBTNode(BiTree &BT)
{
    ElemType ch;
    scanf("%c",&ch);
    if(ch==' ')
        BT=NULL;
    else
    {
        BT = (BTNode*)malloc(sizeof(BTNode));
        BT->data= ch;
        createBTNode(BT->left);
        createBTNode(BT->right);
    }
}
 
//先序遍历二叉树
void printDLR(BiTree BT)
{
    if(BT)
    {
        printf("%c ",BT->data);
        printDLR(BT->left);
        printDLR(BT->right);
    }
}
 
//统计二叉树结点个数
void countLeaves(BiTree BT,int &count)
{
    if(BT)
    {
        if(BT->left==NULL && BT->right==NULL)
        count++;
        else{
            countLeaves(BT->left,count);
            countLeaves(BT->right,count);
        }
    }
}
 
void main()
{
    BTNode *BT;
    int count=0;
    createBTNode(BT);
    printf("先序遍历:");
    printDLR(BT);
    printf("\n");
    countLeaves(BT,count);
    printf("二叉树结点的个数:%d\n",count);
}

按照先序遍历的方式来输入二叉树结点,若孩子结点为空,则输入空格。

输入:

ABD  E  CF

返回结果:

先序遍历:A B D E C F

二叉树结点的个数:3

叶子结点分别是:D、E、F

到此这篇关于统计C语言二叉树中叶子结点个数的文章就介绍到这了,更多相关统计二叉树中叶子结点个数内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Qt扫盲篇之QRegularExpression正则匹配总结

    Qt扫盲篇之QRegularExpression正则匹配总结

    QRegularExpression是Qt5.0引进的,修复了很多bug,提高了效率,使用时建议使用QRegularExpression,下面这篇文章主要给大家介绍了关于Qt扫盲篇之QRegularExpression正则匹配的相关资料,需要的朋友可以参考下
    2023-03-03
  • C语言实现纸牌计算24点小游戏

    C语言实现纸牌计算24点小游戏

    这篇文章主要为大家详细介绍了C语言实现纸牌计算24点小游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-10-10
  • Qt数据库应用之实现通用数据生成器

    Qt数据库应用之实现通用数据生成器

    有两种应用场景需要用到数据生成器,一种是需要测试数据库性能,一种是随机模拟生成一堆数据,用来测试程序的性能。本文将利用Qt实现通用数据生成器,需要的可以参考一下
    2022-02-02
  • C语言中#pragma once的作用

    C语言中#pragma once的作用

    这篇文章主要介绍了C语言中#pragma once的作用,pragma once 一般由编译器提供保证,更多相关内容在下面文章详细展开需要的小伙伴可以参考一下
    2022-05-05
  • C++空指针void*的使用方法

    C++空指针void*的使用方法

    C++空指针void是一种通用指针类型,可以指向任何类型的数据或对象。它不关心指向的数据或对象的类型,只关心指针本身的地址,在使用void指针时,需要将其转换为特定类型的指针,以便对其进行操作或访问其值,本文就给大家介绍一下C++空指针void的使用方法
    2023-06-06
  • C++深入分析讲解链表

    C++深入分析讲解链表

    当我们在写一段代码时,如果要频繁的在一块区域进行插入或者删除操作时,会发现用数组实现会比较复杂,这时候我们就要用另一种数据结构,链表来实现
    2022-06-06
  • C++17之std::visit的具体使用

    C++17之std::visit的具体使用

    本文主要介绍了C++17之std::visit的具体使用,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-02-02
  • C++ 11新特性之大括号初始化详解

    C++ 11新特性之大括号初始化详解

    这篇文章主要介绍了C++ 11新特性之大括号初始化的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用C++具有一定的参考学习价值,需要的朋友们下面跟着小编来一起学习学习吧。
    2017-08-08
  • C++简单五子棋的AI设计实现

    C++简单五子棋的AI设计实现

    这篇文章主要为大家详细介绍了C++简单五子棋的AI设计实现,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-09-09
  • Qt无边框窗口拖拽和阴影的实现

    Qt无边框窗口拖拽和阴影的实现

    自定义窗口控件的无边框,窗口事件由于没有系统自带边框,无法实现拖拽拉伸等事件的处理,本文主要介绍了Qt无边框窗口拖拽和阴影的实现,感兴趣的可以了解一下
    2024-01-01

最新评论