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

来自:网络
时间:2022-08-07
阅读:

树是一种非线性的数据结构,它是由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

返回顶部
顶部